私は同様の問題を見てみましたが、私の問題を助けたものを簡単に見つけることができませんでした。リンカーエラー:未定義参照C++
私はC++でプロジェクトを作成し、コンパイル、リンク、実行するためにUNIXで作業しています。私の特定の問題は、別のファイルで宣言するメソッドへの未定義の参照です。ファイルSharedCache.cppで
、私は次の方法があります。
int SharedCache::replaceLine(ullong address){
int evictPID = -1;
int cacheSet = calcCacheSet(address);
//random uniformly-distributed value for cache line
float numLines = static_cast<float>(CACHE_LINES_PER_SET);
uint cacheLine = static_cast<uint>(uniformDistr(numLines));
if(cache[cacheSet][cacheLine] != NULL){
evictPID = cache[cacheSet][cacheLine]->PID;
}
uint PID= calcPID(address);
uint tag= calcTag(address);
cache[cacheSet][cacheLine]->setLine(PID, tag); //mutex method
return PID;
}
ラインuint cacheLine = static_cast<uint>(uniformDistr(numLines));
は、私は別のファイルから使用する関数を呼び出します。リンカーエラーは、このメソッドへの未定義の参照です。
uniformDistr(float); distributions.hヘッダーで宣言され、distributions.cppで定義されています。私のプロジェクトオプションでは、リンカーのフラグを設定しました - ディストリビューションとdistributions.cppをコンパイルして、distributions.oファイルがリンクすることを確認しました。
これは問題を解決していないため、ここからはどこに行くのかわかりません。
あなたのC++はOKです。リンカのエラーはビルドの間違いを意味することがよくあります。Makefileを投稿しますか? –
Makefileは非常に長く、オーバーフローテキストの書式設定には簡単ではありません。まだ役に立つと思うなら、私は先に進んで投げてください –