我正在编写一个 DLL 来插入另一个(第 3 方)应用程序。该 DLL 将需要依赖于另一组 DLL(出于许可原因,我无法静态链接)。
我希望我的 DLL 可以“xcopy-deployable”到任何目录。我也不想要求将此目录添加到路径中。
如果我只是按照通常的方式构建 DLL,Windows 将拒绝加载 DLL,因为它无法找到当前进程旁边的 DLL。
有没有什么好的选择可以帮助 Windows 找到 DLL?
回答一些问题:
- 该DLL是用C++编写的。
- 额外的 DLL 是 QT-dll。
- 我想将额外的 DLL 放在与我的插件 DLL 相同的文件夹中。我可以从中获取该文件夹的名称
GetModuleFileName
.
- 该应用程序是 Firefox,DLL 是 PKCS#11 安全模块。
- 应用程序使用 DLL 的完整路径加载 DLL(用户在安装插件时提供)。
- 要求将 DLL 放置在 System32 中或应用程序旁边是可行的,但它有点混乱,并且可能会导致卸载程序出现问题。
-
LoadLibrary
and GetProcAddress
当然可以,但对我来说不太可行。我在其他 DLL 中使用了数百个(如果不是数千个)方法。我真的需要使用导入库。
我曾考虑过使用延迟加载的 dll 与SetDllDirectory在 DllMain 中。有人尝试过这样的事情吗?
我能想到3种方法。
- 将 dll 放在与您的应用程序相同的文件夹中(您不能这样做?)
- 使用运行时链接。
LoadLibrary()
and GetProcAddress()
- 使用清单http://msdn.microsoft.com/en-us/library/aa374182(VS.85).aspx
但是,如果 dll 与 .exe 不在同一文件夹中,您如何知道它在哪里?忘记Windows不知道,怎么办you know?
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)