Qt程序打包,如何更改动态链接库搜索路径?

时间:2023-01-28 09:33:35
Qt程序打包过程如下:
1)以release版本编译
2)将需要的动态链接库拷贝到应用程序目录下
这样可以正确运行。
现在的问题是:
我想在应用程序目录下,建立一个名为lib的目录,将需要的动态链接库放入到该目录,将应用程序放在lib的上级目录。可是发现,这样搜索不到库文件。应该如何解决呢?

13 个解决方案

#1


你的运行目录和dll库不在一个目录肯定会找不到的。
QCoreApplication::addLibraryPath("./lib");把这句话加到main.cpp里面。

#2


引用 1 楼  的回复:
你的运行目录和dll库不在一个目录肯定会找不到的。
QCoreApplication::addLibraryPath("./lib");把这句话加到main.cpp里面。

恩。学习了。顺便向你请教下,如何将我们打包的Qt应用程序制作成windows安装包,就像qq或者其它应用程序的安装包一样。谢谢!

#3


用工具做的。你去网上下一个 rar解压器。

#4


引用 1 楼  的回复:
你的运行目录和dll库不在一个目录肯定会找不到的。
QCoreApplication::addLibraryPath("./lib");把这句话加到main.cpp里面。

你确定?大多平台是在运行main前就开始查找动态库的

#5


引用 1 楼  的回复:
你的运行目录和dll库不在一个目录肯定会找不到的。
QCoreApplication::addLibraryPath("./lib");把这句话加到main.cpp里面。


这个明显是找plugin目录的,对Qt本身的dll不管用

gcc可以使用-rpath的链接开关(似乎不支持相对目录)
vc不知道

但可以安装时把特定目录加入PATH变量
或者安装脚本修改注册表
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
的相关位置

其他方法我还不清楚

#6


我错了。那种方法确实不可以。。。 忏悔。。

#7


引用 3 楼  的回复:
用工具做的。你去网上下一个 rar解压器。

能不能说清楚是用什么工具的呢?谢谢了!

#8


rar解压器 这个不就是工具么,用法很简单。复杂的工具我也不会。

#9


[Quote=引用楼主  的回复:]
Qt程序打包过程如下:
1)以release版本编译
2)将需要的动态链接库拷贝到应用程序目录下
这样可以正确运行。
现在的问题是:
我想在应用程序目录下,建立一个名为lib的目录,将需要的动态链接库放入到该目录,将应用程序放在lib的上级目录。可是发现,这样搜索不


#include "lib/***.h"


这个方法可以么?

#10


这个是找头文件,他是要找dll动态库。。 如果静态调用的,应该是不行的,动态调用的应该是可以不在一个目录下的。

#11


引用 5 楼  的回复:
引用 1 楼  的回复:

你的运行目录和dll库不在一个目录肯定会找不到的。
QCoreApplication::addLibraryPath("./lib");把这句话加到main.cpp里面。


这个明显是找plugin目录的,对Qt本身的dll不管用

gcc可以使用-rpath的链接开关(似乎不支持相对目录)
vc不知道

但可以安装时把特定目录加入PATH变量……


这个明显是找plugin目录的,对Qt本身的dll不管用

如果要在没有安装QT平台的电脑上运行,那就不能“对Qt本身的dll不管用”吧

#12


这个是找QT那些插件库,可以这样设置,比如jpeg图片的,或者数据库驱动之类的。。

#13


gcc可以使用-rpath,在Linux上试过可以

#1


你的运行目录和dll库不在一个目录肯定会找不到的。
QCoreApplication::addLibraryPath("./lib");把这句话加到main.cpp里面。

#2


引用 1 楼  的回复:
你的运行目录和dll库不在一个目录肯定会找不到的。
QCoreApplication::addLibraryPath("./lib");把这句话加到main.cpp里面。

恩。学习了。顺便向你请教下,如何将我们打包的Qt应用程序制作成windows安装包,就像qq或者其它应用程序的安装包一样。谢谢!

#3


用工具做的。你去网上下一个 rar解压器。

#4


引用 1 楼  的回复:
你的运行目录和dll库不在一个目录肯定会找不到的。
QCoreApplication::addLibraryPath("./lib");把这句话加到main.cpp里面。

你确定?大多平台是在运行main前就开始查找动态库的

#5


引用 1 楼  的回复:
你的运行目录和dll库不在一个目录肯定会找不到的。
QCoreApplication::addLibraryPath("./lib");把这句话加到main.cpp里面。


这个明显是找plugin目录的,对Qt本身的dll不管用

gcc可以使用-rpath的链接开关(似乎不支持相对目录)
vc不知道

但可以安装时把特定目录加入PATH变量
或者安装脚本修改注册表
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths
的相关位置

其他方法我还不清楚

#6


我错了。那种方法确实不可以。。。 忏悔。。

#7


引用 3 楼  的回复:
用工具做的。你去网上下一个 rar解压器。

能不能说清楚是用什么工具的呢?谢谢了!

#8


rar解压器 这个不就是工具么,用法很简单。复杂的工具我也不会。

#9


[Quote=引用楼主  的回复:]
Qt程序打包过程如下:
1)以release版本编译
2)将需要的动态链接库拷贝到应用程序目录下
这样可以正确运行。
现在的问题是:
我想在应用程序目录下,建立一个名为lib的目录,将需要的动态链接库放入到该目录,将应用程序放在lib的上级目录。可是发现,这样搜索不


#include "lib/***.h"


这个方法可以么?

#10


这个是找头文件,他是要找dll动态库。。 如果静态调用的,应该是不行的,动态调用的应该是可以不在一个目录下的。

#11


引用 5 楼  的回复:
引用 1 楼  的回复:

你的运行目录和dll库不在一个目录肯定会找不到的。
QCoreApplication::addLibraryPath("./lib");把这句话加到main.cpp里面。


这个明显是找plugin目录的,对Qt本身的dll不管用

gcc可以使用-rpath的链接开关(似乎不支持相对目录)
vc不知道

但可以安装时把特定目录加入PATH变量……


这个明显是找plugin目录的,对Qt本身的dll不管用

如果要在没有安装QT平台的电脑上运行,那就不能“对Qt本身的dll不管用”吧

#12


这个是找QT那些插件库,可以这样设置,比如jpeg图片的,或者数据库驱动之类的。。

#13


gcc可以使用-rpath,在Linux上试过可以