[SOLVED]Linking problems: Qt5.5 32bit VS2013



  • I have been searching for an answer to this but no luck as yet.

    Using Qt5.5 32bit, VS2013 on Win8 64bit

    My .pro file contains this:

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

    I have checked both folders and WinUser.h is in the Include and User32.lib is present in the Lib.

    I have the following two functions in my code:

    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);
        }
    }
    

    AND

    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);
    }
    

    I use this exact same code with Qt 5.3.2 32bit VS2010 on Windows 7 64bit and it compiles with no problems. In my current configuration, I get linking errors on the ::SystemParametersInfo and the SendMessage parts of the functions and a bunch of warnings on the headers.

    Warnings

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

    Linking Errors

    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)
    

    Another bit of information, I tried this also using Qt5.5 32bit VS2013 on Win7 64bit and also received the errors as above. Yet another bit of information, in Qt Creator, I can press F2 over either of the symbols above and it takes me to the correct header.

    Could someone point me in the correct direction?



  • Well, the lib might be in the directory, but you didn't add it to the linker.

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


  • <walks away with head down>...
    @Leonardo Thanks!


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.