OpenDDS 中的哪个库包含 "OpenDDS::DCPS::operator<<"?
What library in OpenDDS contains "OpenDDS::DCPS::operator<<"?
我在将我的共享库链接到 OpenDDS (v3.9) 静态库时遇到问题,因为我无法找到此方法签名所在的位置。
这是错误。
[exec] libs/mylib/ABTypeSupportImpl.cpp:74: error: undefined reference to 'OpenDDS::DCPS::operator<<(OpenDDS::DCPS::Serializer&, short)'
[exec] collect2: error: ld returned 1 exit status
[exec] make: *** [/tmp/mybuild/lib_ab/obj/local/armeabi-v7a/lib_ab.so] Error 1
ABTypeSupportImpl.cpp 是通过编译 IDL 自动生成的。更多相同的错误随之而来。由于命名空间 (OpenDDS::DCPS),我认为这会在库 libOpenDDS_Dcps.a 中找到,但是在这个库上使用 nm,然后 grep'ing "operator" 或“<<”,没有结果。对于重载运算符来说,名称修改可能有点难运行ger 吗?我 运行 在 $DDS_ROOT/lib 中的每个库文件上都这样做,但什么也没找到。
如果我重新编译 IDL 并删除具有 short 或 long 等数据类型的结构的成员字段,那么就不会出现任何错误,一切都可以正常链接。
有人知道这个方法签名可能位于哪个库吗?
这些运算符在 'dds/DCPS/Serializer.h' 中声明,但在 Serializer.inl 中内联实现。可能您在启用内联(默认)的情况下编译 OpenDDS,但是当您编译应用程序时,您在编译时禁用了内联。
我在将我的共享库链接到 OpenDDS (v3.9) 静态库时遇到问题,因为我无法找到此方法签名所在的位置。
这是错误。
[exec] libs/mylib/ABTypeSupportImpl.cpp:74: error: undefined reference to 'OpenDDS::DCPS::operator<<(OpenDDS::DCPS::Serializer&, short)'
[exec] collect2: error: ld returned 1 exit status
[exec] make: *** [/tmp/mybuild/lib_ab/obj/local/armeabi-v7a/lib_ab.so] Error 1
ABTypeSupportImpl.cpp 是通过编译 IDL 自动生成的。更多相同的错误随之而来。由于命名空间 (OpenDDS::DCPS),我认为这会在库 libOpenDDS_Dcps.a 中找到,但是在这个库上使用 nm,然后 grep'ing "operator" 或“<<”,没有结果。对于重载运算符来说,名称修改可能有点难运行ger 吗?我 运行 在 $DDS_ROOT/lib 中的每个库文件上都这样做,但什么也没找到。
如果我重新编译 IDL 并删除具有 short 或 long 等数据类型的结构的成员字段,那么就不会出现任何错误,一切都可以正常链接。
有人知道这个方法签名可能位于哪个库吗?
这些运算符在 'dds/DCPS/Serializer.h' 中声明,但在 Serializer.inl 中内联实现。可能您在启用内联(默认)的情况下编译 OpenDDS,但是当您编译应用程序时,您在编译时禁用了内联。