Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Импорт функции из dll Visual Studio 2005


Автор: vzf 27.2.2008, 19:38
Здравствуйте. Прошу извинить за делитанский вопрос но все-таки, объясните мне как мне заюзать функцию из dll.

Вот есть у меня самая простая консольная программа в Visual Studio 2005. Есть dll - pkiclient.dll. Хочется вызвать из прогрмауу функцию, находящуюся в длл. В свойствах проекта уазал дополнительную директорию с библиотеками, указал дополнителную зависимость от pkiclient.dll . Жму build, а мне линкер говорит, что 

Код

fatal error LNK1107: invalid or corrupt file: cannot read at 0x2B8    C:\CertexDemo\CertexDemo\lib\pkiclient.dll


Подскажите пожалуйста, как правильно заюзать функцию из библиотеки. Буду признателен smile

Автор: marcusmae 27.2.2008, 20:19
vzf, Вы осуществляете связывание с библиотекой на этапе компиляции. Правила таковы, что для линковки Вам понадобится lib-файл, а не dll (если укажете dll, то получите, что файл повреждён и тп сообщения). А вот уже когда Ваша программа будет запущена, то понадобится именно dll.

Автор: vzf 27.2.2008, 22:41
Спасибо за ответ. А можно как-нибудь вызвать функцию не имея .lib , а имея только .dll ? Или обязательно наличие .lib -файла ?
Я слышал, что можно загружать dll прямо в коде при помощи функции LoadLibrary. В этом случае также необходим .lib-файл ?

Автор: marcusmae 27.2.2008, 22:54
Цитата(vzf @  27.2.2008,  22:41 Найти цитируемый пост)
А можно как-нибудь вызвать функцию не имея .lib , а имея только .dll ?

Не приходилось.

Цитата(vzf @  27.2.2008,  22:41 Найти цитируемый пост)
Или обязательно наличие .lib -файла ?

Думаю, да.

Цитата(vzf @  27.2.2008,  22:41 Найти цитируемый пост)
Я слышал, что можно загружать dll прямо в коде при помощи функции LoadLibrary.

Да, посмотрите, в поиске много примеров.

Цитата(vzf @  27.2.2008,  22:41 Найти цитируемый пост)
В этом случае также необходим .lib-файл ?

Нет.

Автор: 586 27.2.2008, 23:13
Цитата(vzf @  27.2.2008,  22:41 Найти цитируемый пост)
 можно как-нибудь вызвать функцию не имея .lib , а имея только .dll ?

Можно. В поиск: LoadLibrary, GetModuleHandle, GetProcAddress.

Автор: jonie 28.2.2008, 00:58
да и lib можно при желании сляпать (но это уже совсем не триальная задача, но вроде решалась (конечно, частично) в сборках masm by hutch) ....

http://vortex.masmcode.com/
там почитайте

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)