我正在编写一个DLL来插入另一个(第三方)应用程序。 DLL将需要依赖于另一组DLL(出于许可证原因,我无法静态链接)。
我希望我的DLL可以“xcopy-deployable”到任何目录。我也不想要求将此目录添加到路径中。
如果我只是以通常的方式构建DLL,Windows将拒绝加载DLL,因为它无法找到当前进程旁边的DLL。
是否有任何帮助Windows找到DLL的好选项?
回答一些问题:
GetModuleFileName
获取该文件夹的名称。LoadLibrary
和GetProcAddress
当然会有效,但在我的情况下并不可行。我在其他DLL中使用了数百个(如果不是数千个)方法。我真的需要使用import-libraries。我曾想过在DllMain中使用延迟加载的dll和SetDllDirectory
。有人试过这样的事吗?
答案 0 :(得分:4)
我可以想到3种方法。
LoadLibrary()
和GetProcAddress()
但是如果dll与.exe不在同一文件夹中,你怎么知道它在哪里?忘了Windows不知道,你怎么知道?
答案 1 :(得分:1)
您可以指定dll的路径作为LoadLibrary()的参数。