qt main.obj:-1: error: LNK2019: 无法解析的外部符号 __imp_CommandLineToArgvW,该符号在函数 “int __cdecl dumpMacros(wc

编译qmake时报错:
main.obj:-1: error: LNK2019: 无法解析的外部符号 __imp_CommandLineToArgvW,该符号在函数 "int __cdecl dumpMacros(wchar_t const *)" (?dumpMacros@@YAHPEB_W@Z) 中被引用

qt代码中调用了CommandLineToArgvW函数,而CommandLineToArgvW是windows中shell32.lib中的函数,缺乏系统库。

只需要在.pro文件中加入  LIBS+=-lshell32

qt中系统库的路径由build Environment中的LIB进行设置;系统库的头文件路径由build Environment中的INCLUDE进行设置;可执行程序的路径由Path进行设置。

比如shell32.lib的路径为“C:\Program Files (x86)\Windows Kits\10\lib\10.0.14393.0\um\x64”,需要将“C:\Program Files (x86)\Windows Kits\10\lib\10.0.14393.0\um\x64;”放入LIB中。
比如iostream头文件的路径为“c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include”,需要将“c:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include\iostream;”放入INCLUDE中。
比如rc.exe的路径为“C:\Program Files (x86)\Windows Kits\10\bin\x86”,需要将“C:\Program Files (x86)\Windows Kits\10\bin\x86;”放入Path中。

LIB、INCLUDE都是cl.exe编译程序时会默认依赖的路径,库和头文件会分别从这两者中找。而Path是qt程序都会依赖的,找dll会从Path指定的路径里面找,dll还有操作系统默认查找路径:“C:\Windows\SysWOW64”。qt中还可以通过qt.conf来配置插件路径。

Using QApplication::addLibraryPath() or QApplication::setLibraryPaths(). This approach is recommended if you only have one executable that will use the plugin.

在qt中设置的环境变量不会改变系统环境变量,且只对当前qt工程有效,其值记录在工程目录下的*.pro.user中。更换工程之后需要重新设置。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值