问题在具有依赖性时从其他路径上加载DLL的DLL
Problem loading a DLL with boost DLL from a different path when it has dependencies
我在运行时使用boost::dll
加载库。
使用以下代码,即使在与具有可执行文件的文件夹中,我也可以加载DLL:
auto creator = boost::dll::import_alias<pluginapi_create_t>(fileName, "createPlugin", boost::dll::load_mode::append_decorations);
但是,当DLL具有其他依赖关系时,我有一个问题。这是我的文件夹结构的一个示例:
Main Folder
|
|-program.exe
|
|-pluginsfolder
|
|-plugin1.dll
|-plugin2.dll
|-dependency.dll
如果我加载plugin1.dll
(没有其他依赖关系(,则可以。
如果我加载plugin2.dll
,那需要dependency.dll
,它不起作用。
我想我可以将所有DLL放在同一文件夹中,一切都将开始工作。但是我想将插件放在单独的文件夹中,因为我希望其他用户能够从各自的文件夹中加载插件。
如何在依赖项中加载插件,无论其在文件系统中的位置如何?
我找到了解决方案,这要归功于理查德评论。
这是命令:
auto creator = boost::dll::import_alias<pluginapi_create_t>(fileName, "createPlugin", boost::dll::load_mode::append_decorations | boost::dll::load_mode::load_with_altered_search_path);
加载时我添加了boost::dll::load_mode::load_with_altered_search_path
标志,在搜索如何使用Windows使用Windows的方式使用相应的LOAD_WITH_ALTERED_SEARCH_PATH
时。
相关文章:
- 如何使特定程序仅从安装的路径运行以避免DLL劫持
- 如何从客户端为COM服务器设置dll搜索路径?
- MFC:重写附属 DLL 中 RC 文件中的位图路径
- 设置所需DLL文件的自定义路径:电子应用
- 问题在具有依赖性时从其他路径上加载DLL的DLL
- GetFullPathNameA 不返回 DLL 的路径
- GetFullPathName 不会获取 DLL 路径
- 在 Windows 中加载共享库时在特定路径中选取 dll
- 错误53:找不到文件,而是路径中存在所有DLL
- 当InProcServer32键定义DLL的完整路径时,path环境变量中为什么需要COM DLL的路径
- 搜索.NET组件的搜索路径取决于C /CLI DLL
- Windows找不到DLL在路径中的目录中以为其
- VS2012:“找不到资源编译器DLL.请确保路径正确.”
- Maven NAR插件:在路径上找不到DLL依赖项
- 仅资源 DLL - 文件夹、路径
- QT-在pro中指定DLL路径.文件
- 通过给出DLLName来定位DLL路径
- 设置dll路径来构建qt文件
- 获取dll路径/字符串问题(c++初学者)
- 如何为CMake添加外部DLL路径