assimp-vc140-mt.dll ASSIMP не найден

Я скачал проект Assimp с сайта http://assimp.sourceforge.net/main_downloads.html.

Образ выпуска Assimp

создать zip-изображение

И я также скачал версию cmake x86 по этой ссылке: https://cmake.org/download/

cmake x86 image

Я извлек оба и создал папку сборки рядом с папкой assimp. После этого я открыл командную строку, изменил каталог на указанную папку сборки. Я указал путь cmake.exe к командной строке и путь к папке assimp в качестве первого параметра. После этого у меня было решение Visual Studio в папке сборки. Я создал папку assimp в своем проекте openGL. В этой папке asimp я создал папку lib и положил в нее все из папки build/code/debug, а именно:

assimp-vc140-mt.dll
assimp-vc140-mt.exp
assimp-vc140-mt.ilk
assimp-vc140-mt.lib
assimp-vc140-mt.pdb

После этого я скопировал папку include из загруженной папки assimp рядом с ранее упомянутой папкой lib. Итак, теперь у меня есть все библиотеки и включения внутри моего проекта openGl. Я установил дополнительные каталоги включения, дополнительные библиотеки и дополнительные зависимости в визуальной студии для моего проекта openGl.

В моем main.cpp я включил эти заголовки:

include "assimp/Importer.hpp"
include "assimp/scene.h"
include "assimp/postprocess.h"

Я могу построить свой проект и запустить его. Но когда я запускаю его после появления консоли, я сразу получаю эту ошибку:

assimp-vc140-mt.dll was not found

Я не знаю, что может быть источником ошибки, у вас есть идеи?

Заранее спасибо!


person Viktor Korai    schedule 14.01.2018    source источник
comment
Вы поместили assimp-vc140-mt.dll в ту же папку, что и ваш исполняемый файл?   -  person drescherjm    schedule 14.01.2018


Ответы (1)


Не забывайте, что зависимые DLL, которые не являются системными DLL, загружаются из каталога приложения и из текущего каталога - мне кажется, что вы не поместили assimp-vc140-mt.dll ни в один из них.

person CookiePLMonster    schedule 14.01.2018
comment
Хорошо, это помогло, спасибо. Не могли бы вы сказать мне, почему я должен поместить эту dll в каталог exe, но мне не нужно делать то же самое с glew, грунтом и другими библиотеками? Я новичок в С++, так что извините за глупый вопрос. - person Viktor Korai; 14.01.2018
comment
glew может быть динамически связан с кодом из соответствующего каталога. Для неявного связывания библиотеки DLL следуют Dynamic -Link Library Search Order Либо так, либо вы подключаете другие библиотеки статически, так как их код в конечном итоге встраивается в результирующий исполняемый файл напрямую. - person CookiePLMonster; 15.01.2018