尽管有 CMAKE_DL_LIBS,但对“dlopen”的引用未定义

尽管有 CMAKE_DL_LIBS,但对“dlopen”的引用未定义

我正在尝试安装 gameplay3d 工具。按照cmake 安装说明,我收到此错误:

Linking CXX executable gameplay-encoder
/usr/lib/gcc4/x64/release/libfbxsdk.so: undefined reference to `dlopen'
/usr/lib/gcc4/x64/release/libfbxsdk.so: undefined reference to `dlclose'
/usr/lib/gcc4/x64/release/libfbxsdk.so: undefined reference to `dlsym'

CMakeLists.txt 文件附带这些定义(请注意-ldl${CMAKE_DL_LIBS},这似乎解决了相关线程中其他人的问题):

add_definitions(-lstdc++ -ldl -lfbxsdk -lpng -lz -lfreetype -lpthread)
...
target_link_libraries(
    ${APP_NAME}
    ${APP_LIBRARIES}
    ${CMAKE_DL_LIBS}
)

谢谢您的帮助!

答案1

正如我在评论中写道:
我在 Ubuntu 13.10 64 位上遇到了同样的问题。我不确定我们的问题是否是同一个 Ubuntu 版本,因为我按如下方式解决了它:

我使用了自编译的版本普鲁马图书馆每当我尝试编译我的自己的项目使用了那个 Pluma 库,我得到了上面提到的错误。我尝试${CMAKE_DL_LIBS}像你一样添加,但没有成功。

原因是,我libdl一开始必须手动链接 Pluma (添加-ldl)。之后我就可以libPluma.so毫无问题地使用了。我不确定为什么 Pluma 编译时没有-ldl,但我只能猜测这是因为链接器无法正常工作。

因此,简而言之(并回答您的实际问题):
您需要链接libfbxsdk.so-ldl仅链接它是没有帮助的gameplay-encoder

相关内容