即使EXE没有直接使用符号,如何强制DLL依赖?

wil*_*ilx 1 c++ dll

我有A.DLL依赖于B.DLL.A.DLL包含一些DllMain用B.DLL注册东西的初始化代码().

我还有可执行的E.EXE,它不直接引用任何A.DLL符号,但它通过从B.DLL获得的通用接口使用A.DLL的东西.

问题是A.DLL永远不会加载到E.EXE的进程中,因为它的导出符号都不是E.EXE的导入.

我可以强制A.DLL被加载到进程实际上不引用A.DLL在E.EXE并没有反转的依赖关系(或创建依赖环路)A.DLL和B.DLL之间的符号,而不使用显式LoadLibrary()调用?

编辑:问题已在Windows上使用Visual Studio生成,但可移植性是一个问题,因此LoadLibrary()无法使用.

Fré*_*idi 7

您可以指定/ INCLUDE链接器选项并提供导出的符号A.dll.

即使您的可执行文件没有真正引用该符号,该选项也会强制链接器添加A.dll到依赖项.