Где разместить и как включить dll файлы в c ++ проект?

Я читаю это руководство он проведет вас через шаги, необходимые для создания «визуального» приложения с Cairo и Visual C ++. Руководство предлагает вам загрузить определенные DLL-файлы и сохранить их в каталоге, в котором создается ваш исполняемый файл (отладка).
Вот список файлов, на которые ссылается Нил в своем уроке:

  • cairo Binaries (да, вам также нужен пакет binaries, так как в Dev нет DLL) -> libcairo-2.dll
  • zlib Двоичные файлы -> zlib1.dll
  • libpng Двоичные файлы -> libpng12-0.dll
  • Двоичные файлы Freetype -> freetype6.dll
  • FontConfig Binaries -> libfontconfig-1.dll
  • Двоичные файлы -> libexpat-1.dll

Как видите, файлов довольно много. Мне было интересно, если это «правильный» способ сделать это? Есть ли альтернативный способ, который считается «наилучшей практикой» в этом случае?

3

Решение

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

Конечно, всегда есть альтернативы!

Статическое связывание

Чтобы избежать наличия библиотеки dll, которая должна существовать в вашем приложении, вы можете использовать статическое связывание. Вы связываете файлы .lib во время компоновки, а не ссылки на файлы .dll во время выполнения. Делает ваш .exe больше, но это означает, что вы можете распространять один файл.

Помещение Dlls в другую папку

DLL-файлы не обязательно должны находиться в той же папке, что и .exe, хотя обычно это имеет смысл. Windows будет искать несколько папок при поиске .dll во время выполнения, поэтому вы можете поместить dll в текущий каталог, системный каталог (определенно не рекомендуется) или другой каталог в вашем каталоге. PATH переменная окружения. На самом деле ни одно из этих мест не рекомендуется! Размещение их в той же папке, что и .exe, является самым безопасным, потому что обычно у вас есть контроль над этой папкой.

Конкретные правила для того, как Windows ищет .dll изложены здесь: http://msdn.microsoft.com/en-ca/library/windows/desktop/ms682586(v=vs.85).aspx

Пользовательский шаг сборки

Я не люблю помещать файлы вручную в папки отладки или выпуска. Мне нравится думать о папке отладки как о чем-то, что я могу удалить и пересобрать в любое время, и мне нравится иметь процесс пошаговой сборки, который помещает все, где это необходимо, чтобы я мог легко собрать на любой машине. Поэтому я обычно создаю пользовательский шаг сборки, который копирует необходимые DLL-файлы из папки «source» (в управлении исходным кодом) в мою папку вывода.

7

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]