ヘッダーrandomc.hで宣言されたクラスCRandomMersenneの関数を使用するプロジェクトがあります。関数は別のファイルmersenne.cppで定義されています。私のメイクファイルには、クラスの関数を使用するオブジェクト *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;
}
何か案は?