对类:: method()的未定义引用

时间:2013-02-04 22:22:16

标签: g++ ld undefined-reference

我在我的代码中使用了一个名为ROOT的框架,ROOT提供了大量的lib,之间有PROOF,这应该允许我的代码并行运行。

应该在TProof.h中定义一个启动并行环境的静态方法Open。我正在使用此方法如下:

//usual includes (including ROOT's)
#include 
//lots of code
int main(int argc, const char *argv[])   {
    //Initialization code
    TProof *p = TProof::Open("");
    // more code
    return 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

我做错了什么?我该如何解决?

1 个答案:

答案 0 :(得分:1)

您的编译器(链接器)选项中至少缺少-lProof。我真的不知道框架,所以我不能告诉你这是你的错还是配置脚本的问题。

(这是我发现的方法:下载ROOT的二进制分发版,检查lib文件夹并找到libProof.so。)

如果这还不够,请在库目录中包含您可以找到的其他Proof*库。