我最近一直在尝试安装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
需要链接的文件的路径,我可以看到它工作正常,因为我可以打印结果变量并获得预期的输出。
我有两个变量${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
我正在链接的文件的确切路径,它要么实际上没有链接,要么我正在链接错误的东西。
有人知道为什么我会看到这些链接器错误吗?
我需要链接不同的文件吗?或者我可能需要按特定顺序链接它?
任何帮助将不胜感激,因为我看不出我做错了什么。
如果需要更多信息,请发表评论,我会尽快编辑问题。