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,因此我想知道它。:)