链接器错误:在包含 .so lib 后未定义对 xxx 的引用
Linker error: undefined reference to xxx after including .so lib
在我的命令中明确使用 -lmylib 和 -LmyPath 的未定义引用事件。
我正在尝试使用genicam API编译一个测试程序。此 API 为 linux 提供了包含所有所需定义的共享库。 我的命令如下:
g++ -L/lib -lrt -ldl -Wl,-E -pthread -o mytest <some .o files>
-lFirmwareUpdate_gcc49_v3_1_IDS -llog4cpp_gcc49_v3_1_IDS
-lGCBase_gcc49_v3_1_IDS -lLog_gcc49_v3_1_IDS -lMathParser_gcc49_v3_1_IDS
-lNodeMapData_gcc49_v3_1_IDS -lXmlParser_gcc49_v3_1_IDS
-lGenApi_gcc49_v3_1_IDS
程序编译,但根据链接器,所有应该在 .so 文件中定义的引用都是未定义的,例如:
/usr/bin/ld: <my.o>: in function <myObject>::setTriggerMode(char const*):
my.cpp:271: undefined reference to GenICam_3_1::gcstring::gcstring(char const*)'
我试图查看库的内部,并保持相同的示例:
nm -D /lib/libGCBase_gcc49_v3_1_IDS.so | grep -i gcstring
000000000000c400 T _ZN15GenICam_3_1_IDS8gcstringC1Emc
这条线不是唯一的输出线,但似乎 gcstring 在那里是完全定义的......
所以,我试图知道 ld 是否在取笑我,并使用 strace (-f( 再次运行我的编译命令。 ld 真的打开了好的 .so 文件并找到了它!
谢谢你的帮助,我不知道会发生什么。
发现问题! 这是因为 IDS(凸轮供应商(提供了 API 修改的共享对象,但具有修改的条目名称(与 IDS 相同的名称(......
从 github 获得了真正的库,它可以工作!
相关文章:
- 编译C++时未定义的引用
- vscode g++链路故障:体系结构x86_64的未定义符号
- 如何修复此错误:未定义对"距离(浮点数,浮点数,浮点数,浮点数,浮点数)"的引用
- 我的项目不会像"undefined reference to `grpc::g_core_codegen_interface'"那样使用未定义的引用错误进行编译
- 不知道某个东西是否被忽略会引入未定义的行为吗
- 对C宏的未定义引用,但在定义它时会出现重新定义错误
- 未定义的引用在哪里
- 编译时的 CImg 库返回对"__imp_SetDIBitsToDevice"的未定义引用
- 对Py_Initialize()的未定义引用
- c++11评估顺序(未定义的行为)
- 使用mysql c++连接器的未定义引用
- 从python调用openMP共享库时,未定义opnMP函数
- 在 Mac 上使用 CMAKE 将 FFTW 和 FFTWPP 链接到项目中时未定义的符号
- Cmake 链接问题:未定义对 Button::mousePressEvent(QGraphicsSceneMouseE
- 未定义的引用 .. 使用 OpenCV 编译 C++ 代码时,从命令行
- 在 vscode for c++ 中使用 sqlite3(未定义对 'xxx' 的引用)(我使用了 -lsqlite3)
- 链接器错误:在包含 .so lib 后未定义对 xxx 的引用
- 我不断收到对项目"xxx"的错误未定义引用
- 对`vtable for XXX的未定义引用(其中XXX是结构异常)
- 链接错误:对“XXX的虚函数表”的未定义引用