C ++访问DLL加载

时间:2014-07-25 08:17:18

标签: c++ windows dll

我有一个DLL插件来连接两个不同的外部应用程序。长话短说,应用程序A通过公开函数调用我的插件,然后我的插件调用应用程序B(也通过公开的函数)并将值从B返回到A.

应用程序A有一个配置文件,我必须在其中指定DLL插件的路径。然后它加载DLL并调用它。遗憾的是,应用程序A无法加载多个DLL。是否有可能在插件中编写自定义代码以在加载时加载一些额外的DLL?换句话说,当我的插件被任何进程加载时,我想总是加载应用程序B DLL。

其他解决方案是将应用程序B的目录添加到主进程将搜索DLL的文件夹列表中,但是我也不知道如何执行此操作。

现在我将应用程序B目录添加到系统路径env变量中,但这是不可接受的解决方案。

由于

2 个答案:

答案 0 :(得分:1)

听起来你需要修改DLL search order。使用SetDllDirectoryAddDllDirectory来执行此操作。

或者,您可以通过在调用LoadLibrary时传递DLL的完整路径来满足您的要求。如果您加载的DLL没有包含在应用程序目录结构中的任何依赖项,这可能会很好。

答案 1 :(得分:0)

您是否创建了DLL?如果你正在创建DLL,那么我建议你创建静态库而不是DLL,然后使用这个静态库,你可以创建一个DLL,它将包含你需要的所有符号。

相关问题