【发布时间】:2018-06-28 19:21:48
【问题描述】:
我在 Windows 下使用 VS2017(使用 Cmake 创建)开发一个 c++ 应用程序。我包括一个库(在以下内容中:plib),它本身依赖于 Assimp(v3.1.1)。只要我不包含 Assimp 的任何方法,整个程序就可以工作。只要我包含一个 Assimp-Header 并创建一个对象,程序就会在启动时崩溃并返回代码 0xc000007b。示例:
#include <assimp\Importer.hpp>
int main() {
Assimp::Importer importer;
return 0;
}
即使我评论 Assimp::Importer importer; 行,应用程序也会崩溃,直到我告诉 VS2017 不仅要构建项目文件,还要重新构建项目文件。谁能告诉我为什么会出现这个问题以及如何解决?
摘自我的 CMakeLists:
set(plib_DIR "C:/[...]/plib")
find_package(plib REQUIRED)
list(APPEND project_INCLUDES ${SCREEN_INCLUDE_DIRS})
list(APPEND project_LIBRARIES ${SCREEN_LIBRARIES})
plib 的 CMakeLists 节选:
set(ASSIMP_DIR ${assimp_DIR})
find_package(assimp REQUIRED)
list(APPEND project_INCLUDES ${ASSIMP_INCLUDE_DIRS})
list(APPEND project_LIBRARIES "${ASSIMP_LIBRARY_DIRS}/${ASSIMP_LIBRARIES}.lib")
assimp_DIR 设置为指向我下载 Assimp 3.1.1 版本并编译它的目录的环境变量。我将“lib32/assimp.lib”文件移动到“lib/assimp-vc100-mt.lib”,以便 Cmake 找到它。我还更改了 assimp-config.cmake.in 的开头,以便正确找到 ASSIMP_ROOT_DIR(我使用了 in-source-build):
get_filename_component(_PREFIX "${CMAKE_CURRENT_LIST_FILE}" PATH)
#get_filename_component(_PREFIX "${_PREFIX}" PATH)
#get_filename_component(_PREFIX "${_PREFIX}" PATH)
get_filename_component(ASSIMP_ROOT_DIR "${_PREFIX}" PATH)
【问题讨论】:
标签: c++ linker visual-studio-2017 assimp