经过数小时的互联网研究以寻求解决方案(我知道有一些类似的问题,但没有任何帮助),我差点认输,因此非常感谢您的帮助。
初步:我想将 C99 库open62541用于我自己的 C++ 项目。我为 PubSub 使用了足够的构建选项,因为这是我最感兴趣的。我还将安装路径配置为/home/user/install/open62541
.
问题描述:起初我能够使用这个CMakeLists.txt构建所有内容。但目前我尝试将 open62541 的订阅功能添加到项目中,但 CMake 拒绝将库链接到项目中,因为它应该:
- 我将此示例代码从教程复制到项目中,
add_executable(subscriber ${CMAKE_CURRENT_SOURCE_DIR}/tutorial_pubsub_subscribe.cpp)
并添加target_link_libraries(subscriber PUBLIC open62541)
到我的CMakeLists.txt中。 - CMake 抱怨以下问题:
undefined reference to 'UA_PubSubConnection_regist'
- 然后我去我的安装路径的 lib 文件夹找到
libopen62541.so
和 - 使用 nm 命令检查共享对象
nm libopen62541.so | grep UA_PubSubConnection_regist
- nm 返回 "t",
所以我想 open62541 的构建不能是链接错误的原因。