Использование DLL с заголовком .h в C ++ - PullRequest
5 голосов
/ 14 марта 2009

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

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

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

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

Ответы [ 3 ]

7 голосов
/ 14 марта 2009

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

3 голосов
/ 14 марта 2009

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

Используйте "lib / def" для создания .lib файла.

2 голосов
/ 14 марта 2009

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

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

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

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

...