VC生成的DLL给QT的EXE调用时lib路径问题小结

VC生成的DLL给QT调用,有两种方式,一种是隐式调用调用(使用.lib文件方式):

① 在*.pro工程文件中添加VC生成的lib文件路径时,或者使用一个绝对路径,如:

LIBS += "D:/Test/QT_ex/VC_DLL.lib"
或者使用一个相应路径,如:
LIBS += "VC_DLL.lib"

注:该相对路径指的是build-VCDLL_QTXXX-Desktop_Qt_5_5_0_MSVC20XX_32bit-Debug类似的目录下,该路径经常使用下面语句查看,即工作路径:

    qDebug()<<QDir::currentPath();
 很奇怪,*.pro文件中,各个*.cpp、h文件都是相对于pro文件所在的目录,而lib文件就有些不同。 

② 要正确的运行,还要将 *.dll拷贝到exe所在的目录。

另一种方式是显示调用,即直接使用.dll方式,也存在着*.dll文件放在工作目录的问题:

① 如果是在QT Creator中运行,因为工作目录(

QDir::currentPath()
)是在build-VCDLL_QTXXX-Desktop_Qt_5_5_0_MSVC20XX_32bit-Debug中,因此需要将dll文件拷贝到该目录下,而不是exe文件所在的目录;

② 如果是双击鼠标直接运行exe,则dll文件和exe文件在一个目录下。


小结:

1. LIBS+=...中的路径还是使用$$PWD最保险,这个方式一定会被展开成为“绝对路径”,如同下面:

LIBS += -L$$PWD/MyLibrary/lib/ -lMyLibrary
(可以参看生成的Makefile.debug中内容来验证)

2. 如果在使用第三方库时,出现“undefined reference to”的错误,说明还是没有链接第三方库成功,或者第三方库里面根本没有链接的函数,QT_MinGW版可使用nm 命令查看.a中的函数(QT_MSCV版使用dumpbin查看)。













  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值