включить DLL в Visual Studio C ++ 2008 - PullRequest
3 голосов
/ 16 августа 2011

Есть ли способ включить dll в проект, чтобы после компиляции мне не приходилось помещать эти dll в одну папку с моим исполняемым файлом. Таким образом, я мог просто скомпилировать свой проект с ними. Это возможно, и если да, может ли кто-нибудь направить меня.

Мой проект - проект opencv, и мне нужно включить в папку много dll, и я не знаю, являются ли они сборками .NET или нет, так как я прочитал другой пост, в котором говорилось, что он может быть сделано с .NET сборки DLL.

Ответы [ 3 ]

0 голосов
/ 16 августа 2011

Вы не можете напрямую сделать это с DLL. «DLL» означает « Динамически Связанная библиотека», что означает, что они не являются статически связанными библиотеками. И это последний вид библиотеки, которая «включается» (связывается), когда вы создаете свой исполняемый файл. DLL включены только в тот момент, когда вы запускаете EXE.

Вы можете проверить документацию CV, чтобы увидеть, как вы получаете статическую версию CV для библиотеки.

0 голосов
/ 16 августа 2011

Я понимаю, что вы хотите развернуть exe-файл вместе с его зависимостями (dll), но вы также хотите, чтобы он был настроен в проекте.Вместо этого вы можете настроить свой проект на использование статических библиотек, и вам не нужно беспокоиться о распространении ваших DLL, потому что они уже встроены в исполняемый файл.

Если вы хотите использовать DLL, потому что вы не хотите раздувать ваш exe-файл, тогда ваш код должен будет реализовать его загрузку, то есть вызов функции LoadLibrary и необходимые вызовы определенных функций экспорта.Как только в вашем коде реализована загрузка библиотек DLL, вы можете развернуть их так, как вы описали.

0 голосов
/ 16 августа 2011

DLL спроектированы так, чтобы быть динамически связанными - то есть они загружаются с вашей программой при запуске.

Они не обязательно должны находиться в той же папке, что и ваше приложение, просто где-то на пути, поэтому вам нужна только одна копия библиотеки opencv для всех программ на основе opencv на вашем компьютере.

edit: Вы можете собрать openCV для использования статических библиотек, но это не рекомендуется, у вас все еще есть внешние зависимости, такие как ffmpeg и libs в формате изображения, и Qt, если вы использовали это.

В Windows вы, вероятно, должныпостроить установщик, который может связать EXE и DLL.В противном случае Windows будет предупреждать каждый раз при запуске приложения innosetup - одно из самых простых.

...