0

私のコードではROOTというフレームワークを使用しています。ROOT は大量のライブラリを提供します。その間に、コードを並行して実行できるPROOFがあります。

TProof.hOpenで、並列環境を開始する静的メソッドを定義する必要があります。この方法を次のように使用しています。

// 通常のインクルード (ROOT を含む)
#含む
//大量のコード
int main(int argc, const char *argv[]) {
    //初期化コード
    TProof *p = TProof::Open("");
    // その他のコード
    0 を返します。
}

g++ は私にこのエラーを与えます:

mini2.o: In function `main':
/path/to/file/name.cxx:279: undefined reference to `TProof::Open(char const*, char const*, char const*, int)'

ROOT は、そのライブラリをコンパイルおよびリンクするために必要なすべてのフラグを出力するスクリプトを提供します。この場合、これらのフラグを使用しています。

$ root-config --libs
-L/my/path/root/lib -lCore -lCint -lRIO -lNet -lHist -lGraf -lGraf3d -lGpad -lTree -lRint -lPostscript -lMatrix -lPhysics -lMathCore -lThread -pthread -lm -ldl -rdynamic

私が間違っていることは何ですか?どうすれば解決できますか?

4

1 に答える 1

1

少なくとも-lProofコンパイラ (リンカー) オプションが不足しています。私はフレームワークをよく知らないので、これがあなたのせいなのか、構成スクリプトの問題なのかはわかりません。

(これが私が見つけた方法です:ROOTのバイナリ配布をダウンロードし、libフォルダをチェックして見つけましlibProof.soた。)

これで十分でない場合はProof*、ライブラリ ディレクトリにある他のライブラリを含めます。

于 2013-02-05T00:41:10.443 に答える