我正在尝试使用libpano13中的函数编译一个非常简单的程序,但我遇到了链接错误。我在Ubuntu 10.04上,并完成了以下工作:
sudo apt-get install libpano13-dev
我的示例程序如下:
#include <cstring>
#include <pano13/PTcommon.h>
int main(int argc, char **argv) {
fullPath *outFile = new fullPath();
StringtoFullPath(outFile, (char *)"/tmp/randomImage.jpg");
return 0;
}
我试图用以下命令编译它(上面的代码位于一个名为panoTest.cpp的文件中):
$ g++ panoTest.cpp -o testApp -L/usr/lib -lpano13
当我运行此命令时,出现以下错误:
$ g++ panoTest.cpp -o testApp -L/usr/lib -lpano13
/tmp/ccyIioEi.o: In function `main':
panoTest.cpp:(.text+0x87): undefined reference to `StringtoFullPath(fullPath*, char*)'
collect2: ld returned 1 exit status
make: *** [all] Error 1
现在,我已经检查了/ usr / lib中的libpano *并找到了以下文件:
$ ls /usr/lib/libpano*
/usr/lib/libpano13.a /usr/lib/libpano13.so /usr/lib/libpano13.so.1
/usr/lib/libpano13.so.1.0.0
我使用nm检查了libpano13.so并获得了以下输出:
$ nm --demangle /usr/lib/libpano13.a | grep StringtoFullPath
U StringtoFullPath
U StringtoFullPath
00000000 T StringtoFullPath
$ nm --demangle /usr/lib/libpano13.so | grep StringtoFullPath
nm: /usr/lib/libpano13.so: no symbols
我还使用objdump检查了它:
$ objdump -T /usr/lib/libpano13.so | grep StringtoFullPath
00057fd0 g DF .text 0000004c Base StringtoFullPath
所以,以下似乎是真的:
但是,由于某种原因,g ++无法找到StringtoFullPath的符号。
有没有人对此为何会有任何建议/想法?
非常感谢任何帮助!
答案 0 :(得分:2)
在
undefined reference to `StringtoFullPath(fullPath*, char*)'
让我担心:它包含参数的类型。大多数Linux库都不是C ++,所以应该没有类型......
尝试使用extern“C”{...}块包围#include作为标题。