2013-04-17 3 views
3

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

  • КАИР Binaries (да вам нужен пакет двоичные файлы тоже, как Dev один не содержит DLL) -> libcairo-2. Dll
  • ZLIB Binaries -> zlib1.dll
  • Libpng Binaries -> libpng12-0.dll
  • Freetype Бинарники -> freetype6.dll
  • FontConfig Бинарные -> libfontconfig-1.dll
  • эмигранта Бинарники -> libexpat-1.dll

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

+0

В руководстве указано, что DLL следует размещать в том же каталоге, что и приложение, которое их использует. Они не являются системными DLL и не принадлежат '/ windows' или'/windows/systemXX' –

ответ

6

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

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

Статическая связь

Чтобы избежать кучу библиотек 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 из «исходной» папки (в исходном виде) в мою выходную папку.