0

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

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

//通常包括(包括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 回答