我正在尝试使用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的符号。
是否有人对为什么会这样有任何建议/想法?
任何帮助将不胜感激!
最佳答案
的
undefined reference to `StringtoFullPath(fullPath*, char*)'
让我有些担心:它包含参数的类型。大多数Linux库不是C++,因此应该没有类型...
尝试使用外部“C” {...}块将标题的#include括起来。
关于c++ - 编译/链接到libpano13,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11604584/