Неопределенная ссылка на `PageSetupDlgW @ 4 'при линковке в Qt - PullRequest
0 голосов
/ 06 марта 2012

Я пытался использовать Windows API-интерфейс PageSetupDlg в Qt, чтобы сэкономить время.Тем не менее, я получаю ошибки во время компиляции в заголовке.Вот мой код:

#include <QtCore/QCoreApplication>
#include <windows.h>
#include <QDebug>

int main(int argc, char *argv[])
{
    PAGESETUPDLG lppsd;
    QCoreApplication a(argc, argv);
//#ifdef Q_WS_WIN
//    MessageBox(NULL,TEXT("This is windows window"),
//               TEXT("HAHAYOYO"),MB_OK);
    PageSetupDlg(&lppsd);
//#endif
    return a.exec();
}

Я добавил LIBS += -LC:\Windows\System32\ComDlg32.dll в файл .pro, однако он не работает.Я не уверен, правильно ли писать так.

Мой второй вопрос: нужно ли добавлять операторы #ifdef & #endif при попытке вызвать функцию Windows API?Поскольку функция MessageBox работает правильно без них.

1 Ответ

1 голос
/ 06 марта 2012

вам нужно добавить Comdlg32.lib, а не ComDlg32.dll, который является DLL, а не библиотекой включения.Хотя почему бы просто не использовать QPrintDialog?Кроме того, вам нужно инициализировать переменную PAGESETUPDLG, если вы планируете ее использовать, см. this .

Мой второй вопрос: мне нужно добавить #ifdef &#endif операторы, когда я пытаюсь вызвать функцию Windows API?

Вы должны добавить их, если вы собираетесь работать в системе не Windows , WinAPI наверняка будетнедоступно (и по этой причине вы должны использовать QMessageBox), однако, если ваша система зависит от функций WinAPI, в этом нет никакого смысла, потому что вы будете привязаны к Windows независимо.

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