|
October 16, 2017, 09:23:10 AM |
|
Если я правильно понял, то у вас возникает ошибка при запуске собранного проекта на другой машине. Ошибка заключается в том, что не может найти DLL.
DLL - это динамическая библиотека, она подгружается во время загрузки приложения. Если быть точным, то есть два вида: динамическое связывание во время загрузки и динамическое связывание во время выполнения.
1. Динамическое связывание во время загрузки. В динамической компоновке во время загрузки, приложение делает явный вызов экспортированных функций DLL как локальных функций. Во время компоновки вы указываете необходимые заголовочные файлы (расширение h и файлы импорта lib) 2. Динамическое во время выполнения. Во время выполнения, приложение вызывает функции LoadLibrary или функцию LoadLibraryEx для загрузки библиотеки DLL во время выполнения. После успешной загрузки библиотеки DLL можно использовать функцию GetProcAddress
В вашем случае мы имеем 1-й вариант. Вы собрали проект, но при выполнении программы на другой машине, загрузчик начинает искать необходимый файл DLL и не находит его. Следовательно, собрано у вас все верно, необходимо просто перенести на нужную машину все необходимы файлы.
Есть одни нюанс - это пути поиска DLL загрузчиом, то есть DLL нужно расположить в нужной папке.
Windows выполняет поиск библиотек DLL в следующей последовательности: 1. Каталог, в котором находится исполняемый модуль текущего процесса. 2. Текущий каталог. 3. Системный каталог Windows. Путь к этому каталогу извлекается с помощью функции GetSystemDirectory. 4. Каталог Windows. Путь к этому каталогу извлекается с помощью функции GetWindowsDirectory. 5. Каталоги, указанные в переменной среды PATH.
|