2

我已经下载了四个 Qt 5.1.0 包:

适用于 Windows 32 位的 Qt 5.1.0(MinGW 4.8,OpenGL,666 MB)

适用于 Windows 32 位的 Qt 5.1.0(VS 2010,505 MB)

适用于 Windows 64 位的 Qt 5.1.0(VS 2012,525 MB)

适用于 Windows 64 位的 Qt 5.1.0(VS 2012,OpenGL,522 MB)

安装完这四个包后,我使用Qt 5.1.0 for Windows 32-bit (VS 2010, 505 MB)创建了一个非常简单的 QT 项目

该项目是一个带有 ui 表单的 Qt gui 应用程序。我创建它只是按照 Qt Creator 的模板而不输入任何单词。之后我构建了这个项目并运行,一切正常。

然后我在项目中添加了一个新的 C++ 类。添加的 C++ 类的基类是 QWidget。这一次,我仍然没有在 .cpp 和 .h 文件中输入任何单词。所以添加的类仅由 Qt Creator 创建。之后我再次构建了这个项目,然后运行,一切都还可以。

现在我开始添加我的代码。我在 mainwindow.h 中添加了一行:

#include "myclass.h"

然后我在 mainwindow.cpp 中添加了另一行:

pMyClass = new CMyClass(this);

之后我再次构建了这个项目,这次发生了两个错误。

error LNK2001: unresolved external symbol public: __thiscall CMyClass::CMyClass(class QWidget *)" (??0CMyClass@@QAE@PAVQWidget@@@Z)

error LNK1120: 1 unresolved externals

我使用另外三个 Qt 版本构建了相同的项目:

适用于 Windows 32 位的 Qt 5.1.0(MinGW 4.8,OpenGL,666 MB)

适用于 Windows 64 位的 Qt 5.1.0(VS 2012,525 MB)

适用于 Windows 64 位的 Qt 5.1.0(VS 2012,OpenGL,522 MB)

构建和运行都成功了。一切都好。

因为我的项目可以通过使用成功构建和运行

适用于 Windows 32 位的 Qt 5.1.0(MinGW 4.8,OpenGL,666 MB)

适用于 Windows 64 位的 Qt 5.1.0(VS 2012,525 MB)

适用于 Windows 64 位的 Qt 5.1.0(VS 2012,OpenGL,522 MB)

我很确定我的项目没有任何问题。

仅将Qt 5.1.0 用于 Windows 32 位(VS 2010,505 MB)错误会发生。

我对结果感到困惑。我检查了构建目录,发现VS 2010 没有编译 mycalss.cpp!所有其他三个构建目录都有 myclass 的 .obj 文件或 .o 文件。所以当链接时,发生了错误。

我的系统是 Windows7 64bit Ultimate。有谁知道如何解决这个问题?

4

1 回答 1

1

如果您将新文件(类)添加到项目中,请通过项目的上下文菜单手动调用“Run qmake”。此操作创建新的“制作文件”,现在包括新添加的文件。所有这些都必须在 *.pro 文件发生更改时自动执行。
由于这个原因在这个版本Qt中不能自动工作我不知道(((。

于 2013-07-25T08:56:09.430 回答