Я пытаюсь установить инструменты для 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}
)
Спасибо за справку!
Поскольку я записал в комментарии:
у меня просто была та же проблема на Ubuntu 13.10 64 бита. Я не уверен, является ли причиной нашей проблемы та же версия Ubuntu, как я решил его следующим образом:
я использовал самоскомпилированную версию библиотека Pluma . Каждый раз, когда я пытался скомпилировать мой собственный проект , который использовал тот lib Pluma, я получил ошибку, которую Вы упомянули выше. Я пытался добавить ${CMAKE_DL_LIBS}
как Вы, но не имел никакого успеха.
причина была, который я должен был вручную связать, Pluma с libdl
сначала (добавьте -ldl
). После этого я мог использовать libPluma.so
без проблем. Я не уверен, почему Pluma скомпилировал без -ldl
, но я могу только предположить, что это - что-то с компоновщиком, не работающим правильно.
Так, чтобы сделать его коротким (и ответить на Ваш фактический вопрос):
необходимо связаться libfbxsdk.so
с -ldl
, это не помогает просто связаться gameplay-encoder
с ним.