链接问题:Qt5.5 32bit VS2013

Posted

技术标签:

【中文标题】链接问题:Qt5.5 32bit VS2013【英文标题】:Linking problems: Qt5.5 32bit VS2013 【发布时间】:2015-09-14 18:04:35 【问题描述】:

我一直在寻找这个问题的答案,但还没有运气。

在Win8 64位上使用Qt5.5 32bit,VS2013

我的 .pro 文件包含以下内容:

INCLUDEPATH += "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include"
LIBS += -L"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib" -ladvapi32

我检查了两个文件夹,WinUser.h 位于 Include 中,User32.lib 位于 Lib 中。

我的代码中有以下两个函数:

void suppressAnimations()

    ANIMATIONINFO m_original_settings;
    m_original_settings.cbSize = sizeof(m_original_settings);
    if (::SystemParametersInfo(SPI_GETANIMATION, sizeof(m_original_settings), &m_original_settings, 0)) 
        ANIMATIONINFO no_animation =  sizeof(no_animation), 0 ;
        ::SystemParametersInfo(SPI_SETANIMATION, sizeof(no_animation), &no_animation, SPIF_UPDATEINIFILE | SPIF_SENDCHANGE);
    

int BackgroundTaskManager::changeMonitorState(bool turnOn)

    int lparam = 2;
    if(turnOn) 
        lparam = -1;
        BackgroundTaskManager::MonitorIsSleeping = false;
     else 
        lparam = 2;
        BackgroundTaskManager::MonitorIsSleeping = true;
    
    return SendMessage(HWND_BROADCAST, WM_SYSCOMMAND, SC_MONITORPOWER, (LPARAM)lparam);

我在 Windows 7 64 位上使用与 Qt 5.3.2 32 位 VS2010 完全相同的代码,它编译没有问题。在我当前的配置中,我在 ::SystemParametersInfo 和函数的 SendMessage 部分出现链接错误,并且在标题上出现一堆警告。

警告

C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include\sal_supp.h:57: warning: C4005: '__useHeader' : macro redefinition

链接错误

main.obj:-1: error: LNK2019: unresolved external symbol __imp__SystemParametersInfoW@16 referenced in function "void __cdecl suppressAnimations(void)" (?suppressAnimations@@YAXXZ)
backgroundtaskmanager.obj:-1: error: LNK2019: unresolved external symbol __imp__SendMessageW@16 referenced in function "private: int __thiscall BackgroundTaskManager::changeMonitorState(bool)" (?changeMonitorState@BackgroundTaskManager@@AAEH_N@Z)

另一位信息,我也在 Win7 64 位上使用 Qt5.5 32 位 VS2013 进行了尝试,也收到了上述错误。还有一点信息,在 Qt Creator 中,我可以在上面的任一符号上按 F2,它会将我带到正确的标题。

有人能指点我正确的方向吗?

【问题讨论】:

【参考方案1】:

我知道这很简单:

LIBS += -L"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib" -ladvapi32 -luser32

我没有链接 user32.lib。

【讨论】:

以上是关于链接问题:Qt5.5 32bit VS2013的主要内容,如果未能解决你的问题,请参考以下文章

Win7(32bit)下Qt5.5.0和OpenCV2.4.9环境的搭建

在 qt5 中设置链接器选项

Qt5.5.1+vs2013

Qt 5.5.1 MSVC 2013,32 位 - LNK1181:无法打开输入文件 'NIDAQmx.lib'

Qt5 -static x64 和链接噩梦

怎样配置VS2013+Qt5开发环境