3

からモデルをロードして で使用するために、Assimp 3.0最近インストールしようとしています。BlenderOpenGL

私のプロジェクトは でセットアップされ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ファイルへの正確なパスを出力できても、実際にはリンクしていないか、間違ったことをリンクします。

これらのリンカ エラーが表示される理由を知っている人はいますか?

別のファイルをリンクする必要がありますか? それとも、特定の順序でリンクする必要がありますか?

私が間違っていることがわからないので、助けていただければ幸いです。

さらに情報が必要な場合は、コメントを残してください。できるだけ早く質問を編集します。

4

1 に答える 1

2

問題は、Assimp 3.0 の完全なダウンロードに付属するコンパイル済みのライブラリにありました。

CMake と Make を使用して自分で Assimp ライブラリをコンパイルしましたが、今では問題なく動作しています。

于 2013-04-12T05:07:42.487 に答える