程序员如山石 2024-02-01 14:57 采纳率: 100%
浏览 1
已结题

qt程序自动指定dll目录

1、程序加载dll时,当前目录的子目录存在dll,如何让其查找啊?如果全放到当前目录,感觉是不是挺乱啊。

img

这个dll就在Lib里面,程序就是找不到它
2、环境是win10 qt5.11
.pro的部分配置:

LIBS += -L$$PWD/Lib -lSPW

3、当前试了:

QCoreApplication::addLibraryPath(".\\Lib")、
      std::wstring path2 =L".\\Lib";
    //SetDllDirectory(path2.c_str());

都不行,也许这个问题就是无解的
4、可以设置环境变量解决,但这样操作有些麻烦,不可能让用户设置环境变量
5、预想,在代码中自动解决这一个问题,让程序自己知道到指定目录,找到相应的 DLL

  • 写回答

3条回答 默认 最新

  • 程序员如山石 2024-02-01 15:15
    关注

    Qt设置运行时动态库路径的几点说明
    1、随着需求的不断增加,程序不断变大,用到的动态库也越来越多,到了发布程序的时候你会发现和可执行文件同一目录下文件数量真多(比如著名的金融软件 https://www.webull.com/ 哎呀我去,目录下一堆动态库文件,滚动条都要拉很久,全部堆一块),此时可能会考虑如何将一些库文件分门别类的存放,这样方便管理。
    2、Qt提供的设置动态库路径的方法setLibraryPaths是用来搜索插件动态库的,而不是程序直接依赖的动态库。
    很多人以为这个可以设置Qt的库或者程序中依赖的第三方库的路径,其实想想也知道,因为程序依赖这个库,找不到的话根本跑不起来,程序跑不起来怎么应用执行这个代码呢?
    3、Qt默认是可用通过setLibraryPaths的方式设置Qt插件的动态库目录位置,比如数据库插件sqldrivers,因为这些库文件是真正在Qt程序跑起来以后通过插件形式去加载的。
    4、还可以通过qt.conf文件设置 Plugins="config" 指定所有插件在可执行文件下的config目录下。
    5、要想设置程序直接依赖的动态库在其他目录,找遍全宇宙也只有一个办法,那就是设置环境变量,除此别无他法。
    6、至于如何设置环境变量方式很多,比如手动在电脑上设置,或者搞个批处理文件执行命令行,在程序安装的时候自动执行,或者程序打包目录下用户手动运行这个批处理。
    引自:https://www.cnblogs.com/feiyangqingyun/p/16135350.html

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 2月9日
  • 已采纳回答 2月1日
  • 创建了问题 2月1日

悬赏问题

  • ¥170 如图所示配置eNSP
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效
  • ¥15 悬赏!微信开发者工具报错,求帮改
  • ¥20 wireshark抓不到vlan
  • ¥20 关于#stm32#的问题:需要指导自动酸碱滴定仪的原理图程序代码及仿真
  • ¥20 设计一款异域新娘的视频相亲软件需要哪些技术支持
  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥15 键盘指令混乱情况下的启动盘系统重装