在Qt中链接时对“PageSetupDlgW @ 4”的未定义引用

时间:2012-03-06 13:55:55

标签: qt winapi

我尝试在Qt中使用Windows api PageSetupDlg来节省一些时间。但是,我在标题编译过程中遇到错误。这是我的代码:

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

我在.pro文件中添加了LIBS += -LC:\Windows\System32\ComDlg32.dll,但它不起作用。我不确定这样写是否正确。

我的第二个问题是我是否需要添加#ifdef&amp;我尝试调用Windows API函数时出现#endif语句?由于MessageBox函数在没有它们的情况下正确运行。

1 个答案:

答案 0 :(得分:1)

您需要添加Comdlg32.lib,而不是ComDlg32.dll这是一个dll,而不是包含库。 虽然为什么不使用QPrintDialog?此外,如果您打算使用该变量,则需要初始化PAGESETUPDLG变量,请参阅this

  

我的第二个问题是我需要添加#ifdef&amp;当我尝试调用Windows API函数时#endif语句?

您应该添加它们,如果您打算在非Windows 系统上运行,WinAPI肯定无法使用(原因是您应该使用QMessageBox),但是,如果您的系统依赖于WinAPI函数,那么没有意义,因为无论如何都将绑定到Windows。