Qt:窗口函数是未解析的外部符号

Qt: windows functions are unresolved external symbols

提问人:Netherwire 提问时间:10/24/2013 最后编辑:CommunityNetherwire 更新时间:1/23/2015 访问量:6258

问:

我正在尝试在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

C++ 、Windows WinAPI Qt-Creator

评论

0赞 vahancho 10/24/2013
您肯定错过了与 Windows 库的链接。或?user32.lib

答:

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