2015-09-04 6 views
-1

Я делаю консольное приложение win32, используя msvC++, который будет использовать очень простую dll. Я поместил свой .lib и заголовок для моей dll (моя dll только один заголовок) в папку с консольными приложениями.Зачем мне размещать мою динамическую библиотеку ссылок?

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

+1

Ну, конечно. Решение MSVC++ позволяет создавать несколько проектов. Все исполняемые файлы находятся в том же месте, что и папка Debug по умолчанию. Если вы не используете эту функцию, вам придется копировать файлы самостоятельно. Используйте эту функцию. –

ответ

0

Посмотрите на эту ссылку:

Dynamic-Link Library Search Order

Windows, имеет поиск DLL заказ. Вы можете изменить его по функциям, указанным в приведенной выше ссылке.

Ваша библиотека импорта используется для определения информации о функциях в вашей DLL и т. Д. Вы можете использовать функцию LoadLibrary("myDLL.dll") для загрузки DLL без заголовка.

В этом случае вы должны использовать функцию GetProcAddress(module, "function_name") для получения адресов функций в вашей DLL.

GetProcAddress function

и вот ссылка, где есть какое-то решение для GetProcAddress():

Calling functions in a DLL from C++

+1

Проблема - порядок поиска DLL. Остальная часть вашего ответа не имеет ничего общего с вопросом, который спросил liuz. 'LoadLibrary()'/'GetProcAddress()' не является ответом на эту проблему, хотя это альтернативное решение, если вы хотите загрузить DLL из местоположения, которое не включено в порядок поиска DLL (хотя вы можете использовать ' SetDllDirectory() 'или' AddDllDirectory() 'для решения этой проблемы). –

Смежные вопросы