からモデルをロードして で使用するために、Assimp 3.0
最近インストールしようとしています。Blender
OpenGL
私のプロジェクトは でセットアップされSublime Text 3
ているので、プロジェクトをビルドするためCMake
に必要なファイルを生成するファイルを作成しました。make
たとえば、私が使用している他のすべてのライブラリはSFML
含まれており、正常にリンクされていますが、何らかの理由で機能しAssimp
ていません。
ビルド時に、次のリンカー エラーが発生します。
undefined reference to `Assimp::Importer::Importer()
undefined reference to `Assimp::Importer::~Importer()
undefined reference to `Assimp::Importer::~Importer()
これはリンカ エラーであるため、問題がCMake
ファイルにあると想定しています。
FindASSIMP.cmake
正しいインクルード ディレクトリとリンクする必要があるファイルのパスを使用して、いくつかの変数を設定するファイルを作成しました.lib
。結果の変数を出力して、期待される出力を取得できるため、正常に機能していることがわかります。
と の 2 つの変数が${ASSIMP_INCLUDE_DIR}
あり${ASSIMP_LIBRARY}
ます。
release
ビルドでは:
${ASSIMP_INCLUDE_DIR} = C:/lib/assimp/3.0/include
${ASSIMP_LIBRARY} = C:/lib/assimp/3.0/lib/assimp_release-dll_win32/assimp.lib
CMake
すべてをまとめた私のメインファイルは次のようになります (関連のない多くのものが取り除かれています):
set(EXE "main")
# Add sub-directories to create libraries from my files
add_subdirectory(various_sub_dirs)
add_executable(${EXE} my_sources.cpp)
# Link up my sub-directory libraries
target_link_libraries(${EXE} various_libraries_from_my_code)
# Link up external libraries
target_link_libraries(${EXE} ${ASSIMP_LIBRARY})
target_link_libraries(${EXE} ${GLEW_LIBRARIES})
target_link_libraries(${EXE} ${GLUT_LIBRARY})
target_link_libraries(${EXE} ${OPENGL_LIBRARIES})
# etc...
include
エラーは発生しないのでinlcude directory
、正しく使用されていることはわかっていますが、何らかの理由で、リンクしている.lib
ファイルへの正確なパスを出力できても、実際にはリンクしていないか、間違ったことをリンクします。
これらのリンカ エラーが表示される理由を知っている人はいますか?
別のファイルをリンクする必要がありますか? それとも、特定の順序でリンクする必要がありますか?
私が間違っていることがわからないので、助けていただければ幸いです。
さらに情報が必要な場合は、コメントを残してください。できるだけ早く質問を編集します。