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

时间:2012-03-02 16:27:36

标签: 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加载到进程中而不在E.EXE中实际引用A.DLL的符号,并且不反转A.DLL和B.DLL之间的依赖关系(或创建依赖关系循环),并且不使用明确的LoadLibrary()电话?

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

1 个答案:

答案 0 :(得分:6)

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

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