Невозможно скомпилировать простое приложение Qt для связи с Windows user32 lib - PullRequest
0 голосов
/ 24 мая 2018

У меня есть простое приложение QWidgets только с одной кнопкой.Вот заголовок

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include "Windows.h"
//#include "Winuser.h"

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private slots:
    void on_pushButton_clicked();

private:
    Ui::MainWindow *ui;
    bool changed;
};

#endif // MAINWINDOW_H

И реализация

#include "mainwindow.h"
#include "ui_mainwindow.h"

MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    changed = false;
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::on_pushButton_clicked()
{
    if (!changed){
//        DEVMODE *dm = new DEVMODE();
//        EnumDisplaySettings(NULL,ENUM_CURRENT_SETTINGS,dm);
//        dm->dmPelsWidth = (unsigned long) 1024;
//        dm->dmPelsHeight = (unsigned long) 768;
//        ChangeDisplaySettings(dm,CDS_FULLSCREEN);
        DEVMODE desiredMode = { 0 };
        desiredMode.dmSize = sizeof(DEVMODE);
        desiredMode.dmPelsWidth = 1024;
        desiredMode.dmPelsHeight = 768;
        desiredMode.dmFields = DM_PELSHEIGHT | DM_PELSWIDTH;
        LONG res = ChangeDisplaySettings(&desiredMode,CDS_UPDATEREGISTRY | CDS_GLOBAL | CDS_RESET );
    }
    else{
        ChangeDisplaySettings(NULL,0);
    }

    changed = !changed;
}

И мой файл .pro

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = ChangeResolution
TEMPLATE = app

# The following define makes your compiler emit warnings if you use
# any feature of Qt which has been marked as deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if you use deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

LIBS += -luser32

SOURCES += \
        main.cpp \
        mainwindow.cpp

HEADERS += \
        mainwindow.h

FORMS += \
        mainwindow.ui

Мне нужно разработать приложение, которое должно изменитьразрешение дисплея, только при отображении определенных изображений, до 1024x768 и затем возвращается к нормальному состоянию.Чтобы проверить, как это сделать, я пробую приведенный выше код, который я нашел здесь или SO.Однако при попытке скомпилировать приведенный выше код я получаю следующую ссылку:

mainwindow.obj:-1: error: LNK2019: unresolved external symbol __imp_ChangeDisplaySettingsW referenced in function "private: void __cdecl MainWindow::on_pushButton_clicked(void)" (?on_pushButton_clicked@MainWindow@@AEAAXXZ)

Из того, что я исследовал, похоже, что компилятор обнаружил, что библиотека не найдена, поэтому я добавилстрока LIBS для файла .pro, но ничего не изменилось.

Настройки моих проектов указывают, что я использую 64-битный компилятор Qt 5.10.0 MSVC2017.

Любая помощь о том, как получить этоскомпилировать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...