系统信息:win xp SP3,Microsoft Visual Studio 2008 版本号为9.0.21022.8 RTM
Microsoft .NET Framework 版本号为3.5 SP1
Qt插件版本号为1.1.5
我从http://qt.nokia.com/downloads/windows-cpp-vs2008下载并安装了Qt 4.6.3。然后我添加了Qt 1.1.5插件,并配置了PATH变量。
当我打开一个新的QT项目时,默认示例可以正常工作。
在Nokia(qt)网站上,我找到了一些示例,但似乎事情并没有正常工作。
以下是许多不起作用的示例之一:
#include <QtGui>
#include <QWidget>
class QLabel;
class QLineEdit;
class QTextEdit;
class AddressBook : public QWidget
{
Q_OBJECT
public:
AddressBook(QWidget *parent = 0);
private:
QLineEdit *nameLine;
QTextEdit *addressText;
};
AddressBook::AddressBook(QWidget *parent)
: QWidget(parent)
{
QLabel *nameLabel = new QLabel(tr("Name:"));
nameLine = new QLineEdit;
QLabel *addressLabel = new QLabel(tr("Address:"));
addressText = new QTextEdit;
QGridLayout *mainLayout = new QGridLayout;
mainLayout->addWidget(nameLabel, 0, 0);
mainLayout->addWidget(nameLine, 0, 1);
mainLayout->addWidget(addressLabel, 1, 0, Qt::AlignTop);
mainLayout->addWidget(addressText, 1, 1);
setLayout(mainLayout);
setWindowTitle(tr("Simple Address Book"));
}
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
AddressBook addressBook;
addressBook.show();
return app.exec();
}
编译器报错如下:
输出窗口
正在链接...
main.obj : error LNK2001: 无法解析的外部符号 "public: virtual struct QMetaObject const * __thiscall AddressBook::metaObject(void)const " (?metaObject@AddressBook@@UBEPBUQMetaObject@@XZ)
main.obj : error LNK2001: 无法解析的外部符号 "public: virtual void * __thiscall AddressBook::qt_metacast(char const *)" (?qt_metacast@AddressBook@@UAEPAXPBD@Z)
main.obj : error LNK2001: 无法解析的外部符号 "public: virtual int __thiscall AddressBook::qt_metacall(enum QMetaObject::Call,int,void * *)" (?qt_metacall@AddressBook@@UAEHW4Call@QMetaObject@@HPAPAX@Z)
main.obj : error LNK2001: 无法解析的外部符号 "public: static struct QMetaObject const AddressBook::staticMetaObject" (?staticMetaObject@AddressBook@@2UQMetaObject@@B)
C:\Documents and Settings\nik\My Documents\Visual Studio 2008\Projects\vs_03\Debug\vs_03.exe : fatal error LNK1120: 4 unresolved externals
结果
生成日志已保存在“file://c:\Documents and Settings\nik\My Documents\Visual Studio 2008\Projects\vs_03\vs_03\Debug\BuildLog.htm” vs_03 - 5个错误,0个警告
看起来问题与宏 Q_OBJECT 的使用有关,但我不知道该怎么做才能使它正常工作。
可能是安装错误或...没有头绪。
任何帮助都将不胜感激。