提问人:Netherwire 提问时间:10/24/2013 最后编辑:CommunityNetherwire 更新时间:1/23/2015 访问量:6258
Qt:窗口函数是未解析的外部符号
Qt: windows functions are unresolved external symbols
问:
我正在尝试在QtCreator中使用te WinAPI编译一个简单的类似helloworld的非Qt C++应用程序。代码如下:
#include <windows.h>
int main()
{
HWND cons = GetConsoleWindow();
SetWindowText(cons, L"I am the console window");
MessageBox(cons, L"Hello world!", L"I am the MessageBox", MB_OK | MB_ICONERROR);
return 0;
}
看起来很简单,但是当我尝试构建它时,编译失败并显示:
main.obj:-1: error: LNK2019: unresolved external symbol __imp__MessageBoxW@16 referenced in function _main
main.obj:-1: error: LNK2019: unresolved external symbol __imp__SetWindowTextW@8 referenced in function _main
我开始寻找,我找到了这个,但它对我一点帮助都没有,因为当我写下这个:
LIBS += -L"C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\Lib"
甚至这个:
LIBS += -L"C:\\Program Files (x86)\\Microsoft SDKs\\Windows\\v7.0A\\Lib\\shell32.lib"
在我的 ,这些“符号”仍然悬而未决。每次更改 -file 内容后,我都运行 qmake。那么,有什么想法吗?.pro
.pro
答:
11赞
Frank Osterfeld
10/25/2013
#1
-L
设置 DLL 的搜索路径,但它实际上不会链接任何内容。实际链接是通过 完成的。设置系统库的搜索路径应该不是必需的,但您需要链接到 user32:-l
win32:LIBS += -luser32
评论
1赞
Frank Osterfeld
10/25/2013
它使该系列的其余部分特定于 Windows(以防您想在其他地方构建项目)
5赞
FourtyTwo
1/23/2015
#2
除了弗兰克的回答(这对我有很大帮助,谢谢!我想补充一点,这只是 vor MSVC 所必需的,MinGW 似乎不需要那条线。对我来说,这是最令人困惑的部分,我首先以为我的 msvc 工具链有问题。
我现在的加入看起来像这样,以反映这一事实:
msvc: LIBS += -luser32
评论
user32.lib