2010-12-06 9 views

ответ

6

Вы можете использовать load-time dynamic linking или run-time dynamic linking в своей DLL так же, как в исполнителе. Единственное ограничение - не звонить LoadLibrary из функции DllMain, чтобы избежать взаимоблокировок.

2

LoadLibrary и GetProcAddress есть, но один из, ваших друзей ...

1

Обычно вы связываете к DLL через библиотеку экспорта в вашем проекте. Затем функции DLL могут быть вызваны вашей программой, если DLL находится на пути к программе во время выполнения.

Это также возможно (но намного больше работы), чтобы избежать необходимости связывания времени требуемых функций путем ручной загрузки DLL и получения требуемых адресов функций, но это не обязательно, если сторонняя DLL поддерживает обычные механизмы связи времени.

+0

Импорт библиотеки подходит, если .dll можно смело предположить, что там до начала приложения. В противном случае ему нужна LoadLibrary() и т. Д. – seand 2010-12-06 20:26:10

2

Если в этой DLL-файле есть .lib-файл, вы просто добавляете его на вкладку компоновщика и импортируете его функции статически. Если это не так, есть некоторые инструменты для создания .lib-файла из .dll.

Также вы можете импортировать функции динамически, используя LoadLibrary и GetProcAddress.
MSDN говорит, что вы не можете вызвать LoadLibrary из DllMain. Но в большинстве случаев ничего плохого не происходит.

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