Qt:windows函数是无法parsing的外部符号

我想在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; } 

看起来很简单,但是当我试图build立它时,编译失败:

 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" 

在我的.pro ,这些“符号”仍然没有解决。 在每次更改 .pro文件内容之后,我运行了qmake。 那么,有什么想法?

-L设置DLL的搜索路径,但它并不实际链接任何东西。 实际的链接是通过-l完成的。 设置系统库的搜索路径不应该是必须的,但是你需要链接到user32:

 win32:LIBS += -luser32 

除了弗兰克的答案(这非常帮助我,谢谢你!)我想补充说,这只是要求MSVC,MinGW似乎并不需要这一行。 这对我来说是最容易混淆的部分,我首先以为我遇到了msvc工具链的问题。

我的收入现在看起来像这样来反映这个事实:

 msvc: LIBS += -luser32