Я работаю под Windows и разрабатываю приложение на С++ с использованием VS2017 (созданного с помощью Cmake). Я включаю библиотеку (в следующем: 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})
Выдержка из CMakeLists от plib:
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 можно было найти правильно (я использовал исходную сборку):
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)