Assimp链接器错误 - 未定义的引用

时间:2013-04-11 19:54:52

标签: c++ build linker cmake assimp

我最近一直在尝试安装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文件来为我设置一些变量,包含正确的include目录和需要链接的.lib文件的路径,我可以看到它工作正常,因为我可以打印生成的变量并获得预期的输出。

我有两个变量${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,但出于某种原因,即使我可以打印出{{1}的确切路径我正在链接,它要么实际上没有链接,要么我正在连接错误的东西。

有人知道为什么我会看到这些链接器错误吗?

我是否需要链接其他文件?或者我可能需要按特定顺序链接它?

任何帮助都会受到赞赏,因为我看不出我做错了什么。

如果需要更多信息,请发表评论,我会尽快编辑问题。

1 个答案:

答案 0 :(得分:2)

问题出在Assimp 3.0完整下载的预编译库中。

我使用CMake和Make自己编译Assimp库,现在它没有任何问题。