本人想编一个界面程序,但是刚刚开始就发现,添加自定义类,总是编译错误,即使把自定义类简化到很简单的程度,也还是报错。同样的简单类定义,在VS2013上,编译是能通过的,且运行正确,不知道是不是开发环境设置不对,请高手帮忙指点一下。
1.主窗口头文件:
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = 0);
~MainWindow();
private:
Ui::MainWindow *ui;
};
#endif // MAINWINDOW_H
2.主窗口源文件:
#include "ui_mainwindow.h"
#include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
3.自定义简单类头文件:
#ifndef ACLASS_H
#define ACLASS_H
class AClass
{
public:
AClass();
unsigned int iData;
};
#endif // ACLASS_H
4. 自定义简单类源文件:
#include "aclass.h"
AClass::AClass()//构造函数的实现
{
iData = 1;
}
5.主函数文件:
#include <QApplication>#include <QtGui>
#include "mainwindow.h"
#include "aclass.h"
int main(int argc, char *argv[]){
QApplication a(argc, argv); MainWindow w;
AClass aClass;
w.show();
return a.exec();}
说明:上面主函数文件中,若把
AClass aClass;
一句注释掉,则编译正确,程序可以运行,但是,若果加上这一句,编译就有错误,
main.obj:-1: error: LNK2019: 无法解析的外部符号 "public: __cdecl AClass::AClass(void)" (??0AClass@@QEAA@XZ),该符号在函数 main 中被引用
debug\IOTest.exe:-1: error: LNK1120: 1 个无法解析的外部命令
NMAKE:-1: error: U1077: “"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\amd64\link.EXE"”: 返回代码“0x460”
NMAKE:-1: error: U1077: “"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\amd64\nmake.exe"”: 返回代码“0x2”
23:01:30: 为项目IOTest执行步骤 ...
23:01:30: 配置没有改变, 跳过 qmake 步骤。
23:01:30: 正在启动 "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\amd64\nmake.exe"
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\amd64\nmake.exe" -f Makefile.Debug
cl -c -nologo -Zm200 -Zc:wchar_t -FS -Zi -MDd -GR -W3 -w34100 -w34189 -EHsc /Fddebug\IOTest.pdb -DUNICODE -DWIN32 -DWIN64 -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB -I"..\IOTest" -I"." -I"C:\Qt\Qt5.4.2\5.4\msvc2013_64\include" -I"C:\Qt\Qt5.4.2\5.4\msvc2013_64\include\QtWidgets" -I"C:\Qt\Qt5.4.2\5.4\msvc2013_64\include\QtGui" -I"C:\Qt\Qt5.4.2\5.4\msvc2013_64\include\QtANGLE" -I"C:\Qt\Qt5.4.2\5.4\msvc2013_64\include\QtCore" -I"debug" -I"." -I"C:\Qt\Qt5.4.2\5.4\msvc2013_64\mkspecs\win32-msvc2013" -Fodebug\ @C:\Users\ZGS\AppData\Local\Temp\nm611C.tmp
main.cpp
f:\z2_qtfiles\working_iotest\iotest\iotest\aclass.h : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
link /NOLOGO /DYNAMICBASE /NXCOMPAT /DEBUG /SUBSYSTEM:WINDOWS "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" /MANIFEST:embed /OUT:debug\IOTest.exe @C:\Users\ZGS\AppData\Local\Temp\nm6861.tmp
main.obj : error LNK2019: 无法解析的外部符号 "public: __cdecl AClass::AClass(void)" (??0AClass@@QEAA@XZ),该符号在函数 main 中被引用
debug\IOTest.exe : fatal error LNK1120: 1 个无法解析的外部命令
NMAKE : fatal error U1077: “"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\amd64\link.EXE"”: 返回代码“0x460”
Stop.
NMAKE : fatal error U1077: “"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\amd64\nmake.exe"”: 返回代码“0x2”
Stop.
23:01:33: 进程"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\BIN\amd64\nmake.exe"退出,退出代码 2 。
Error while building/deploying project IOTest (kit: Desktop Qt 5.4.2 MSVC2013 64bit)
When executing step "Make"
23:01:33: Elapsed time: 00:03.
麻烦高手指点一下,先谢过啦!