Импорт ссылок по имени (C ++ / Visual Studio) - PullRequest
0 голосов
/ 21 июля 2011

У меня есть несколько импортов NT, которые я хочу использовать в своей программе, проблема в том, что я не могу использовать их без продолжительного процесса загрузки и настройки WDK для использования только двух функций. Я также предпочел бы не использовать GetModuleHandle и GetProcAddress.

Я знаю, что в VB6 вы можете вручную определить импортированные функции из DLL следующим образом:

Private Declare Function NtFunction Lib "ntdll.dll" (function arguments) As type

Есть ли что-то подобное, что я могу сделать с C ++ в Visual Studio, не имея всех заголовков / библиотек?

1 Ответ

4 голосов
/ 21 июля 2011

Вы говорите, что не хотите использовать GetProcAddress, но это именно то, что делает VB6 Declare Function (и .NET p / invoke).

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

Библиотека импорта немного сложнее, но есть инструменты для создания библиотек импорта из .DLL.

Если вы создаете файл .DEF, вы можете использовать инструмент LIB.EXE, который поставляется с Visual C ++ (а также доступен для бесплатной загрузки в составе Windows SDK), см. Создание библиотеки импорта

Вот некоторая дополнительная информация .

mingw поставляется с инструментом для большей части автоматизации создания файла .DEF: http://www.mingw.org/wiki/CreateImportLibraries (создаваемая библиотека импорта может использоваться только с gcc, но файл .DEF полезен для создания библиотеки импорта VC ++, так как описано выше).

Вот еще один инструмент, который может помочь: http://www.codeproject.com/KB/tips/ImpDef.aspx

...