Использование DLL с заголовком .h в C++

Мне дали небольшую библиотеку, состоящую из .dll, заголовка .h и файла .def. Я почти уверен, что библиотека была написана на C, но, возможно, на C++.

Могу ли я получить доступ к функциям в библиотеке без использования метода LoadLibrary/GetProcAddress/FreeLibrary, о котором обычно говорят. У меня нет файла .lib — обычно он есть?

Я буквально провел последние 2 дня, разыскивая это. Кажется, что, поскольку мне дали заголовочный файл, определяющий функции, которые я хочу использовать из dll, и файл .def, мне не нужно явно «загружать» каждую функцию вручную (LoadLibrary/GetProAddress/FreeLibrary) - в В моем случае я буду использовать около 5 или 6 функций из .dll, но доступно около 70, и кажется, что это будет головная боль и приведет к ненужному беспорядку кода.

Спасибо за любой совет.


person Richter    schedule 14.03.2009    source источник


Ответы (3)


В Visual C++ есть "lib" - поищите в интерактивной справке.

Используйте «lib/def», чтобы создать файл .lib.

person Jimmy J    schedule 14.03.2009

Существует несколько способов создания библиотеки импорта для DLL. Microsoft документирует способ создания библиотеки путем создания собственного файла .DEF:

person Michael Burr    schedule 14.03.2009

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

Не уверен, что это сработает, но вы можете попробовать:

Создайте файл .C с пустыми заглушками и файл .DEF. Скомпилируйте как DLL с точно таким же именем, чтобы сгенерировать .lib. Выбросьте новую DLL и свяжите ее с библиотекой, если существующая DLL находится в том же каталоге, что и ваш exe, ваша программа сможет загрузить и связать ее.

Я считаю, что это сработает, потому что собственные библиотеки DLL не имеют строгого имени.

person Michael    schedule 14.03.2009