waldy
16-05-2010, 08:46
Hallo,
ich sitzte schon seit Tagen an diesem Linking Problem und hab auch schon ausgiebig die Suchfunktion des Forums benutzt aber komme trotzdem nicht auf eine Loesung.
Problem:
/tmp/ccKrBmkN.o: In function `TMatrix<double>::~TMatrix()':
main.cpp:(.text._ZN7TMatrixI7adoubleED1Ev[TMatrix<double>::~TMatrix()]+0x1e): undefined reference to `TMatrix<double>::DelMatrix()'
collect2: ld returned 1 exit status
Das eigentliche Programm ist recht gross, daher hab ich mir ein Modell gebastelt, das nur den noetigsten Code enthaelt und den Fehler produziert.
Laut dem Forum koennte ich in die "matrix.h" Datei die Zeile "#include "matrix.cpp" " einfuegen und damit loest sich das Problem tatsaechlich, allerdings nicht im eigentlichen Programm.
Ich bin hier ueber Hinweise gestossen, dass es ein haeufiges Problem ist, aber keine Loesung dafuer.
Ich kompiliere mit:
g++ matrix.cpp main.cpp
Offenbar fehtl da irgendwas wogegen ich linken muss.
Hier der Modellcode.
//matrix.h
#ifndef MATRIX_H
#define MATRIX_H
#include <stdlib.h>
#include <stdio.h>
template<class T> class TMatrix
{
public:
int cols, rows;
int ElementSize;
T **p;
int SleepFlag;
TMatrix(){
cols=0;
rows=0;
p =0;
SleepFlag=0;
ElementSize = sizeof(T);
};
~TMatrix(){
if (p!=0){
DelMatrix();
}
};
void DelMatrix();
void DelMat(){ DelMatrix(); };
};
#endif
//matrix.cpp
#ifndef MATRIX_CPP
#define MATRIX_CPP
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <math.h>
#include "matrix.h"
template<class T>
void TMatrix<T>::DelMatrix()
{
if (p!=0){
delete[] p[0];
delete[] p;
};
rows=0;
cols=0;
p =0;
SleepFlag=0;
};
#endif
//main.cpp
#include "matrix.h"
int main(){
TMatrix<double> tm;
return 0;
}
Ich hoffe jemand hat einen kleinen Hinweis fuer mich, was man da machen koennte.
Danke.
Gruss,
waldy
ich sitzte schon seit Tagen an diesem Linking Problem und hab auch schon ausgiebig die Suchfunktion des Forums benutzt aber komme trotzdem nicht auf eine Loesung.
Problem:
/tmp/ccKrBmkN.o: In function `TMatrix<double>::~TMatrix()':
main.cpp:(.text._ZN7TMatrixI7adoubleED1Ev[TMatrix<double>::~TMatrix()]+0x1e): undefined reference to `TMatrix<double>::DelMatrix()'
collect2: ld returned 1 exit status
Das eigentliche Programm ist recht gross, daher hab ich mir ein Modell gebastelt, das nur den noetigsten Code enthaelt und den Fehler produziert.
Laut dem Forum koennte ich in die "matrix.h" Datei die Zeile "#include "matrix.cpp" " einfuegen und damit loest sich das Problem tatsaechlich, allerdings nicht im eigentlichen Programm.
Ich bin hier ueber Hinweise gestossen, dass es ein haeufiges Problem ist, aber keine Loesung dafuer.
Ich kompiliere mit:
g++ matrix.cpp main.cpp
Offenbar fehtl da irgendwas wogegen ich linken muss.
Hier der Modellcode.
//matrix.h
#ifndef MATRIX_H
#define MATRIX_H
#include <stdlib.h>
#include <stdio.h>
template<class T> class TMatrix
{
public:
int cols, rows;
int ElementSize;
T **p;
int SleepFlag;
TMatrix(){
cols=0;
rows=0;
p =0;
SleepFlag=0;
ElementSize = sizeof(T);
};
~TMatrix(){
if (p!=0){
DelMatrix();
}
};
void DelMatrix();
void DelMat(){ DelMatrix(); };
};
#endif
//matrix.cpp
#ifndef MATRIX_CPP
#define MATRIX_CPP
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <math.h>
#include "matrix.h"
template<class T>
void TMatrix<T>::DelMatrix()
{
if (p!=0){
delete[] p[0];
delete[] p;
};
rows=0;
cols=0;
p =0;
SleepFlag=0;
};
#endif
//main.cpp
#include "matrix.h"
int main(){
TMatrix<double> tm;
return 0;
}
Ich hoffe jemand hat einen kleinen Hinweis fuer mich, was man da machen koennte.
Danke.
Gruss,
waldy