Как связать DLL для использования LoadLibrary () (в C ++ в Windows) и сделать импорт переменных из вызывающего exe - PullRequest
0 голосов
/ 27 сентября 2018

В Windows у меня есть исполняемый файл программы, который является целью внедрения DLL через хук Windows.Хук вводит мою DLL в пространство программы цели, заставляя ее выполнить LoadLibrary ().Я хочу экспортировать определенную переменную из exe в DLL, чтобы DLL могла читать содержимое этой переменной.

Поскольку это динамическое связывание, exe и DLL не связаны друг с другом компоновщиком.Я не могу собрать DLL, потому что я получаю ошибку компоновщика 2001 - нерешенную внешнюю - для переменной, которую я пытаюсь импортировать из exe.Я попытался использовать это в DLL: extern "C" __declspec (dllimport) EGL_UINT8 * ssFrameDataBlock [];

Но это не устраняет ошибку ссылки.Очевидно, я пропускаю некоторые шаги.Как мне экспортировать символ из exe и импортировать его в DLL для динамического связывания?Каков правильный синтаксис на каждой стороне для экспорта и импорта?

1 Ответ

0 голосов
/ 28 сентября 2018

Не забыли ли вы украсить определение переменной в исполняемом файле с помощью __declspec (dllexport)?Затем вам нужно будет предоставить exe-файл .lib как часть сборки DLL.

Если вы не экспортируете хотя бы один символ (будь то с помощью dllexport или оператора EXPORTS в файле def или в командной строке), файл .lib не будет создан.

Если выне может предоставить .lib для сборки DLL, вы также можете использовать GetProcAddress () из кода DLL (несмотря на имя, которое может получить адрес любого экспорта, а не только функции).

...