未定义的引用`PageSetupDlgW@4';在Qt中链接时
我试图在Qt中使用windowsapi页面设置dlg来节省一些时间。但是,我在标题的编译过程中遇到了错误。这是我的密码:未定义的引用`PageSetupDlgW@4';在Qt中链接时,qt,winapi,Qt,Winapi,我试图在Qt中使用windowsapi页面设置dlg来节省一些时间。但是,我在标题的编译过程中遇到了错误。这是我的密码: #include <QtCore/QCoreApplication> #include <windows.h> #include <QDebug> int main(int argc, char *argv[]) { PAGESETUPDLG lppsd; QCoreApplication a(argc, argv); /
#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();
}
#包括
#包括
#包括
int main(int argc,char*argv[])
{
页面设置DLG lppsd;
qcorea应用程序(argc、argv);
//#如果你赢了
//MessageBox(空,文本(“这是windows窗口”),
//文本(“HAHAYOYO”),MB_OK);
页面设置DLG(&lppsd);
//#恩迪夫
返回a.exec();
}
我已经在.pro文件中添加了LIBS+=-LC:\Windows\System32\ComDlg32.dll
,但是它不起作用。我不确定这样写是否正确
我的第二个问题是,当我尝试调用Windows API函数时,是否需要添加
#ifdef
和#endif
语句?因为没有它们,MessageBox
函数可以正常运行。您需要添加Comdlg32.lib
,而不是Comdlg32.dll
,它是一个dll,不是一个包含库。
但是为什么不直接使用呢?此外,如果计划使用PAGESETUPDLG
变量,则需要初始化该变量,请参阅
我的第二个问题是,当我尝试调用Windows API函数时,是否需要添加#ifdefendif语句
您应该添加它们,如果您打算在非Windows系统上运行,WinAPI肯定不可用(这是您应该使用的原因),但是,如果您的系统依赖于WinAPI函数,则没有意义,因为您将绑定到Windows。我已将lib更改为LIBS+=-L“C:\Program Files\Microsoft SDK\Windows\v7.0A\Lib\ComDlg32.Lib但gcc仍然抱怨同样的错误。尽管有控制台或gui应用程序,我还是加入了它。Ooops~我已经放弃使用这种方法。可能包含dll文件的路径应该没有空格。我希望您在本项目的文档中充分说明,尽管您使用的是Qt,但您也使用了平台限制库,因此否定了使用Qt可以获得的任何好处。如果你在字里行间读到,我认为这是个坏主意。@Styne666好的,我知道这样做不好。我写这篇文章是为了熟悉winapi。Qt是否提供了涵盖整个winapi的所有函数?我不知道。如果是,那么我们应该让应用程序独立于平台。