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 library の自己コンパイルバージョンを使用しました。 Pluma libを使用した own project をコンパイルしようとすると、上記のエラーが発生しました。私はあなたのような${CMAKE_DL_LIBS}
を追加しようとしましたが、成功しませんでした。
その理由は、最初にPlumaをlibdl
と手動でリンクする必要があったためです(-ldl
を追加)。その後、libPluma.so
を問題なく使用できました。 Plumaが-ldl
なしでコンパイルされた理由はわかりませんが、リンカーが正常に動作していないと推測できます。
短くする(そして実際の質問に答える)には:libfbxsdk.so
と-ldl
をリンクする必要がありますが、gameplay-encoder
とリンクするだけでは役立ちません。