3

我最近一直在尝试安装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我正在链接的文件的确切路径,它要么实际上没有链接,要么我正在链接错误的东西。

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

我需要链接不同的文件吗?或者我可能需要按特定顺序链接它?

任何帮助将不胜感激,因为我看不出我做错了什么。

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

4

1 回答 1

2

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

我使用 CMake 和 Make 自己编译 Assimp 库,现在它可以正常工作了。

于 2013-04-12T05:07:42.487 回答