LoadLibrary调用DLL时正在查找依赖DLL
Finding dependent DLLs when DLL called by LoadLibrary
我构建了一个DLL,它使用了一堆其他DLL。外部应用程序使用LoadLibrary加载我的主DLL。一个这样的例子是Excel(主DLL的扩展名为.XLL),另一个是Python(主DLL扩展名为.PYD)
我的计划是在包含其他DLL位置的主DLL中嵌入一个清单,这样我就不必执行以下一项或多项操作:
- 在应用程序调用LoadLibrary之前,将当前目录设置为主DLL的目录
- 在应用程序调用LoadLibrary之前,先调用SetDllDirectory
- 要求所有DLL与主DLL位于同一目录中
请注意,我已经在不同的点上完成了以上所有内容(实际上是1或2与3的结合),但这似乎并不完全令人满意。
我有机会执行我的计划吗?关于这个主题的MSDN文档似乎不透明到让人无法理解的地步(也就是说,我试图遵循它,但没有成功)。
有人把这个标记为重复,并提到了一个完全不同的问题。我知道我的DLL的依赖项-我想做的是有一种方法来通知LoadLibrary我已将所有依赖DLL放置在何处,而无需更改目录或使用SetDllDirectory。宣言似乎是为这项任务设计的,但文档太糟糕了,我想知道我是否值得再努力几个小时。
我不会以任何方式在清单文件中提供到其他DDL的路径
但解决这个问题的方法可能是使用Path环境变量
在调用LoadLibrary之前,将其他DLL的所有路径添加到路径环境变量中
相关文章:
- 在 Windows 上,是否可以让 dll 在不使用 PATH 环境变量的情况下在另一个文件夹中查找依赖项?
- 如何在 CMake 超级生成中查找 dll/so 文件
- 指定Qt查找OpenSSL DLL的位置
- 如何查找 dll 注册失败的原因
- C++ ATIOGLXX.pdb 包含查找模块 ATIOGLXX.dll 源代码所需的调试信息
- 查找适用于"The specified module could not be found"的 DLL
- 如何在 64 位 DLL 中查找导出函数的地址?
- VS2012正在查找64位dll而不是32位
- JNI 问题:DLL 中的文件句柄出现符号查找错误C++
- 如何查找所有应用程序的COM dll
- 如何查找加载程序 DLL 的路径
- ChaiScript std lib on Mac / c++ 在运行时查找 dll
- 在Windows DLL中通过签名查找函数
- 查找dll的依赖模块
- 查找与__declspec(dllexport)相关联的dll文件
- 查找c#中引用的非托管c++ dll的依赖项
- 过程入口点无法在动态链接库中找到-查找错误的DLL
- 如何使c++程序查找dll
- C++程序无法启动,因为缺少.dll,但它应该查找 .lib
- 在将C++exe转换为dll后查找入口点,并将其使用到C#中