Как вызвать зависимость DLL, даже если EXE-файлы не используют символы напрямую? - PullRequest
0 голосов
/ 02 марта 2012

У меня A.DLL, который зависит от B.DLL. A.DLL содержит некоторый код инициализации (DllMain), который регистрирует вещи с помощью B.DLL.

У меня также есть исполняемый файл E.EXE, который напрямую не ссылается на символы A.DLL, но использует материал A.DLL через универсальные интерфейсы, полученные из B.DLL.

Проблема в том, что A.DLL никогда не загружается в процесс E.EXE, поскольку ни один из его экспортированных символов не является импортом E.EXE.

Могу ли я принудительно загрузить A.DLL в процесс без фактической ссылки на символы A.DLL в E.EXE и без инвертирования зависимости (или создания цикла зависимостей) между A.DLL и B.DLL и без использования явный LoadLibrary() вызов?

РЕДАКТИРОВАТЬ: проблема была создана в Windows с Visual Studio, но переносимость является проблемой, поэтому LoadLibrary() не может использоваться.

1 Ответ

6 голосов
/ 02 марта 2012

Вы можете указать параметр компоновщика / INCLUDE и предоставить символ, экспортируемый с помощью A.dll.

Даже если ваш исполняемый файл не ссылается на этот символ, эта опция принудительно заставит компоновщикдобавить A.dll к зависимостям.

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