【问题标题】:Compiling a simple Qt "Hello World!" application within Visual Studio 2010 Express?编译一个简单的 Qt “Hello World!” Visual Studio 2010 Express 中的应用程序?
【发布时间】:2011-03-03 04:05:19
【问题描述】:

我正在尝试构建一个基本的 Qt “Hello, world!” Visual Studio 中的应用程序。

我得到了moc 步骤(我认为),但现在我不知道如何修复此链接器错误:

1>moc_mainwindow.obj : error LNK2001: unresolved external symbol "public:
static struct QMetaObject const QMainWindow::staticMetaObject"
(?staticMetaObject@QMainWindow@@2UQMetaObject@@B)

我已经做了很多搜索,但我不知所措。

这是我的包含目录:

  • i:\Qt\4.6.3\include\QtCore;
  • i:\Qt\4.6.3\include\QtGui;
  • i:\Qt\4.6.3\include;
  • i:\Qt\4.6.3\include\ActiveQt;
  • reease;
  • .;
  • i:\Qt\4.6.3\mkspecs\win32-msvc2008

这是我要链接的库:

  • i:\Qt\4.6.3\lib\QtGui4.lib;
  • i:\Qt\4.6.3\lib\QtCore4.lib;
  • gdi32.lib;
  • comdlg32.lib;
  • oleaut32.lib;
  • imm32.lib;
  • winmm.lib;
  • winspool.lib;
  • ws2_32.lib;
  • ole32.lib;
  • user32.lib;
  • advapi32.lib;
  • libpng.lib;
  • msimg32.lib;
  • shell32.lib;
  • kernel32.lib;
  • uuid.lib;

有人有什么想法吗?

【问题讨论】:

标签: visual-studio-2010 qt visual-studio-express


【解决方案1】:

qmake 将从 .pro 文件中的头文件生成 moc voodoo。由于您没有使用 qmake,从它的声音来看,而是一个原生的视觉工作室项目,这可能是问题的原因。

如果您使用 qmake 生成您的 Visual Studio 项目,您的所有问题都会消失,生活会变得美好。大概!

我用的是open 2010.05;显然你想用正确的路径替换你的版本。

设置环境

从开始菜单启动 2010 命令环境
-set include=%include%;C:\Qt\2010.05\qt\include
-set lib=%lib%;C:\Qt\2010.05\qt\lib -set path=%path%;C:\Qt\2010.05\qt\bin
-set QMAKESPEC=win32-msvc2010

编写代码、创建文件等

生成初始 pro 和 makefile 并启动 VS
-qmake -tp vc
-qmake

你现在应该有一个 makefile - 通过运行检查它是否工作:
-nmake

现在启动视觉工作室
-VCExpress.exe /useenv
-XXX.vcxproj 现在可以打开了

如果这不起作用,您可能需要针对 Visual Studio 构建 qt。这非常简单 - 转到 qt 目录(从 Visual Studio Express 命令窗口中)并输入:

configure.exe -platform win32-msvc2010 -no-webkit -no-phonon -no-phonon-backend -no-script -no-scripttools -no-multimedia -no-qt3support -fast

【讨论】:

  • 当我重新开始编程和 Qt 时,我一定会尝试一下。感谢您提供明确的指示。
  • 一年半之后……我终于又开始使用 Qt 编程了,是的,这很奏效。也许有点笨重和麻烦……我想我必须经常重做一步来更新 moc 文件?
【解决方案2】:

您不能在 VC++ 的 Express 版上安装 Qt VS 插件。假设您要编译 moc,您还需要确保在链接时包含适当的库(*.lib 文件)。这位于项目属性 > 链接器 > 输入 > 附加依赖项下。

您至少需要 qtcore4.lib。

还要确保 Qt 库路径在您的库搜索路径中。在我的电脑上是 c:\qt\4.6.2\lib。

【讨论】:

  • 是的,我使用 qmake 构建了项目,它添加了库(我不得不稍微修改一下)我将使用包含的库和路径列表进行更新。
【解决方案3】:

我能够使用 http://rajorshi.net/blog/2009/01/using-qt-with-msvc-express-2008/http://portfolio.delinkx.com/files/Qt.pdf 作为指南让 QT 与 Visual C++ Express 2010 一起工作。以防万一还有人遇到问题。

【讨论】:

    【解决方案4】:

    您是否先使用 qmake 创建了 Visual Studio 项目?问题似乎是 moc 编译。你有没有安装qt插件和环境变量中的qt路径?你能加你hello world的代码让我看看吗?

    【讨论】:

    • 它的快递,无法安装插件.. 代码不仅仅是 hello world.. 它目前是一个命令行程序.. 我正在添加一个基本的 qt 空窗口和通用自动创建类。 QApplication a(argc, argv);主窗口 w; w.show();返回 a.exec();
    • 如果您无法在 Express Edition 中安装插件,我不确定能否提供帮助。您需要能够创建 moc 文件,我相信您可以从命令行手动执行此操作,然后尝试更改 Visual Studio 参数以进行编译。但是我怀疑调试器在这种情况下会很好地工作,因为它可能会尝试使用纯 C++ 代码中的信号和其他 Qt 宏来调试 moc 代码。为什么不试试 QtCreator 或 Eclipse?您需要特定的视觉工作室功能吗?
    • 它在 QtCreator 中编译得很好,这不是问题。问题是,我 / 需要 / 使用 Visual Studio 2008 或 2010 .. 我只有 express。
    • 这让事情变得非常复杂。我不知道是否可以在没有插件的情况下在 Visual Studio 中编译,即使你可以,正如我之前所说的,调试器可能很难使用。我知道这很麻烦,但如果你真的必须使用 Visual Studio,我会得到标准版。很抱歉无法为您提供更多帮助。
    • 好吧,我得到了标准版本.. 不得不为此付出代价很痛苦.. 但更痛苦的是我得到了同样的错误。那我现在怎么解决呢?
    【解决方案5】:

    您需要添加命令来生成 QT 元类,然后还将生成的文件作为 c++ 代码包含在您的项目中。

    生成 QT 元类:

    • 首先,将您的 QT bin 路径添加到可执行目录中。 (这在配置属性 > VC++ 目录中)

    • 将包含 Q_OBJECT 宏的头文件添加到项目中。

    • 多选你的头文件,然后右键点击一个头文件,点击属性。

      • 将“项目类型”从“C/C++ Header”更改为“Custom Build Tool”。
      • 将命令行设置为:moc.exe "%(FullPath)" > "$(ProjectDir)MetaObjects\moc_%(Filename).cpp"
      • 将描述设置为:QT: Generate $(ProjectDir)MetaObjects\moc_%(Filename).cpp(可选)
      • 将输出设置为:$(ProjectDir)MetaObjects\moc_%(Filename).cpp
    • 运行 Build 只是为了让它生成元对象代码
    • 将项目目录 Metaobjects 文件夹中生成的 C++ 文件添加到您的项目中

    【讨论】:

      猜你喜欢
      • 2011-05-09
      • 2017-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多