【发布时间】:2013-01-19 17:56:30
【问题描述】:
我在我的代码中使用了一个名为 ROOT 的框架,ROOT 提供了大量的库,然后有 PROOF 应该允许我的代码并行运行。
应该在TProof.h 中定义一个启动并行环境的静态方法Open。我使用这种方法如下:
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
我做错了什么?我该如何解决?
【问题讨论】:
-
您得到的错误是链接器错误,而不是编译器错误。
TProof.h已被编译器找到(否则该步骤已经失败),但您似乎忘记了针对相关库链接。 -
我正在链接所有必要的库,至少 ROOT 这么认为。
-
不管怎样,我编辑了这个问题,应该更清楚一点。
标签: g++ ld undefined-reference