неопределенная ссылка на 'dlopen' несмотря на CMAKE_DL_LIBS

Я пытаюсь установить инструменты для 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
задан 23 March 2014 в 22:46

1 ответ

Поскольку я записал в комментарии:
у меня просто была та же проблема на Ubuntu 13.10 64 бита. Я не уверен, является ли причиной нашей проблемы та же версия Ubuntu, как я решил его следующим образом:

я использовал самоскомпилированную версию библиотека Pluma . Каждый раз, когда я пытался скомпилировать мой собственный проект , который использовал тот lib Pluma, я получил ошибку, которую Вы упомянули выше. Я пытался добавить ${CMAKE_DL_LIBS} как Вы, но не имел никакого успеха.

причина была, который я должен был вручную связать, Pluma с libdl сначала (добавьте -ldl). После этого я мог использовать libPluma.so без проблем. Я не уверен, почему Pluma скомпилировал без -ldl, но я могу только предположить, что это - что-то с компоновщиком, не работающим правильно.

Так, чтобы сделать его коротким (и ответить на Ваш фактический вопрос):
необходимо связаться libfbxsdk.so с -ldl, это не помогает просто связаться gameplay-encoder с ним.

1
ответ дан 11 November 2019 в 12:49

Другие вопросы по тегам:

Похожие вопросы: