我在我的代码中使用了一个名为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
我做错了什么?我该如何解决?
答案 0 :(得分:1)
您的编译器(链接器)选项中至少缺少-lProof
。我真的不知道框架,所以我不能告诉你这是你的错还是配置脚本的问题。
(这是我发现的方法:下载ROOT的二进制分发版,检查lib
文件夹并找到libProof.so
。)
如果这还不够,请在库目录中包含您可以找到的其他Proof*
库。