В этом подходе нет ничего плохого, и это, вероятно, самый быстрый способ запустить приложение. Вашему приложению нужны эти библиотеки, поэтому их размещение в одной папке позволяет найти их.
Есть, конечно, всегда альтернативы!
Статическая связь
Чтобы избежать кучу библиотек 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 из «исходной» папки (в исходном виде) в мою выходную папку.
В руководстве указано, что DLL следует размещать в том же каталоге, что и приложение, которое их использует. Они не являются системными DLL и не принадлежат '/ windows' или'/windows/systemXX' –