我有一个项目使用 CRandomMersenne 类中的函数,在标头randomc.h中声明;这些函数在不同的文件mersenne.cpp中定义。在我的 makefile 中,我有一个使用类函数的对象 *MC_funcs2.o*。源 *MC_funcs2.cpp* 包括标头randomc.h。但是编译器抱怨:
MC_funcs2.o:MC_funcs2.cpp:(.text+0x20): 未定义对“CRandomMersenne::Random()”的引用
我知道在类定义之外声明函数时我做错了一些事情,包括使用提到的函数的头文件,并且可能在 makefile 中的链接。以下是一些文件的精简版:
生成文件:
SpMC3: SpMC3.cpp SpMC.h mersenne.o MC_funcs2.o
g++ SpMC3.cpp MC_funcs2.o mersenne.o -o SpMC3
MC_funcs2.o: MC_funcs2.cpp SpMC.h randomc.h
g++ -c MC_funcs2.cpp mersenne.cpp
mersenne.o: mersenne.cpp randomc.h userintf.cpp
g++ -c mersenne.cpp userintf.cpp
SpMC3.cpp(主程序):
#include "SpMC.h"
int main() {
cout << "boing" << endl;
return 0;
}
MCfuncs2.cpp(不编译的那个):
#include "SpMC.h"
#include "randomc.h"
CRandomMersenne RanGen(time(0));
void outrandom() {
ofstream out;
out << RanGen.Random() << endl;
return;
}
有任何想法吗?