Являются ли файлы .lib бесполезными без файлов заголовков? - PullRequest
6 голосов
/ 12 февраля 2012

У меня есть некоторые файлы .lib, но у меня нет доступа к файлам заголовков .h.Означает ли это, что файлы .lib теперь бесполезны?

Если нет, то как я могу использовать их снова?

Я пытался использовать эту строку в своей программе, но, похоже, это не так.скомпилировано в окончательный исполняемый файл (проверено с помощью CFF Explorer).

#pragma comment(lib, "SomeLibFile.lib")

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

Ответы [ 2 ]

5 голосов
/ 12 февраля 2012

Зависит от того, как был написан код файла .lib. Если это c api, то для этого и используется ключевое слово extern. Вы можете найти какую-то программу, которая покажет вам функцию экспорта. Тогда вы можете объявить их как внешние в вашем коде. Проблема была бы в ваших структурах данных.

В любом случае, вам технически не нужно иметь заголовочные файлы, вы можете сами определить структуры данных и объявить функции с ключевым словом extern.

Вы можете просто связать .lib, когда запустите компоновщик в конце процесса компиляции.

2 голосов
/ 12 февраля 2012

Вы можете связать файл .lib, передав его в командной строке компоновщика, без #pragma.

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

В любом случае, заголовочные файлы не генерируются компилятором (хорошо, MIDL и CORBA используютгенерируемые машиной заголовочные файлы, но вся информация в заголовке все еще вручную вводится в файлы .idl).И если ваша технология не использует библиотеку типов, необходимая информация не хранится в DLL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...