[英]Plugin DLLs that depend on other DLLs
我正在编写一个DLL来插入另一个(第三方)应用程序。 DLL将需要依赖于另一组DLL(出于许可证原因,我无法静态链接)。
我希望我的DLL可以“xcopy-deployable”到任何目录。 我也不想要求将此目录添加到路径中。
如果我只是以通常的方式构建DLL,Windows将拒绝加载DLL,因为它无法找到当前进程旁边的DLL。
有没有什么好的选项可以帮助Windows找到DLL?
回答一些问题:
GetModuleFileName
获取该文件夹的名称。 LoadLibrary
和GetProcAddress
当然可以工作,但在我的情况下并不可行。 我在其他DLL中使用了数百个(如果不是数千个)方法。 我真的需要使用import-libraries。 我曾想过在DllMain中使用延迟加载的dll和SetDllDirectory
。 有没有人尝试过这样的事情?
我可以想到三种方式。
LoadLibrary()
和GetProcAddress()
但是如果dll与.exe不在同一个文件夹中,你怎么知道它在哪里? 忘记的Windows不知道, 你怎么知道?
您可以指定dll的路径作为LoadLibrary()的参数。
另一种选择是修改PATH变量。 有一个用于启动主应用程序的批处理文件,并设置PATH =%PATH%;%~dp0。 这确保了最小的占地面积,在运行后系统中没有留下额外的痕迹。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.