依赖于其他DLL的插件DLL
我正在编写一个DLL来插入另一个(第三方)应用程序。 该DLL需要依赖另一组DLL(由于许可原因,我无法静态链接)。
我希望我的DLL能够“xcopy-deployable”到任何目录。 我也不想要求将这个目录添加到路径中。
如果我只是以通常的方式构建DLL,则Windows将拒绝加载DLL,因为它无法在当前进程旁边找到DLL。
有没有什么好的选择来帮助Windows找到DLL?
回答一些问题:
GetModuleFileName
获取该文件夹的名称。 LoadLibrary
和GetProcAddress
当然会起作用,但在我的情况下并不可行。 我在其他DLL中使用了数百个,甚至数千个方法。 我真的需要使用导入库。 我曾考虑过在DllMain中使用延迟加载的dll和SetDllDirectory
。 有没有人尝试过这样的事情?
我可以想到3种方法。
LoadLibrary()
和GetProcAddress()
但是,如果该DLL与.exe不在同一个文件夹中,你怎么知道它在哪里? 忘记Windows不知道,你怎么知道?
你可以指定dll的路径作为LoadLibrary()的参数。
另一个选项是修改PATH变量。 有一个用于启动主应用程序的批处理文件,并设置PATH =%PATH%;%〜dp0。 这确保了最小的占地面积,运行后系统中不会留下额外的痕迹。
链接地址: http://www.djcxy.com/p/44543.html上一篇: Plugin DLLs that depend on other DLLs
下一篇: IIS ASP.NET MVC and dllimport calls lock the file preventing future deployment