Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 使用QLibrary加载具有依赖关系的库_Qt_Qlibrary - Fatal编程技术网

Qt 使用QLibrary加载具有依赖关系的库

Qt 使用QLibrary加载具有依赖关系的库,qt,qlibrary,Qt,Qlibrary,假设我有两个库,A.dll和B.dll。库A依赖于B。我想将A加载到我的项目中 我的项目在C:/project中。如果我在C:/Project中同时保留A.dll和B.dll,我可以加载A: QLibrary lib("A"); lib.load(); 这个很好用load()将返回false 问题是我想在C:/Project/lib中同时保留A.dll和B.dll。但当我将两个LIB移动到该位置并尝试加载时: QLibrary lib("C:/Project/lib/A"); lib.loa

假设我有两个库,
A.dll
B.dll
。库
A
依赖于
B
。我想将
A
加载到我的项目中

我的项目在
C:/project
中。如果我在
C:/Project
中同时保留
A.dll
B.dll
,我可以加载
A

QLibrary lib("A"); 
lib.load();
这个很好用<如果
B.dll
不在
C:/Project
中,则code>load()将返回false

问题是我想在
C:/Project/lib
中同时保留
A.dll
B.dll
。但当我将两个LIB移动到该位置并尝试加载时:

QLibrary lib("C:/Project/lib/A");
lib.load();
它失败了。但是,如果我将
A.dll
保存在
C:/Project/lib
中,并将
B.dll
保存在
C:/Project
中,则此功能会起作用

如何将两个库都保存在
C:/Project/lib
中,并成功加载
A.dll


编辑:我收到的错误消息是
“无法加载库C:/Project/lib/A。找不到指定的模块。”

尝试使用setdldirectory,请参见您应该将C:/Project/lib的路径添加到系统环境中,或者从项目选项卡添加到QT Creator中编辑路径变量(为你的库添加路径)

你能肯定地打印出错误字符串吗,只是用它更新了问题。我认为
QLibrary lib(“C:/Project/lib/A”);
可能合适。我个人会保留
QLibrary lib(“A”);
原始版本,并将“C:\Project\lib”放在进入搜索路径。你能试试看并告诉我结果吗?你可以尝试
QCoreApplication::addLibraryPath(const QString&path)
其中路径就是前面提到的路径。它起作用了。我按照DmitrThread的建议使用SetDllDirectory(),并保留QLibrary lib(“A”);请尝试Qt解决方案,并告诉我它是否有效。在Qt(跨平台)中使用Windows特定的API并不理想应用程序,如果该API有qt替代方案。通过这种方式,您可以将特定于平台的详细信息减少为字符串,而不是API,这在qt世界IMHO中将是一个更简洁的解决方案。如果该API没有帮助,我们需要改进qt,因此我想知道它。:)