编译一个简单的Qt“Hello World!” Visual Studio 2010 Express中的应用程序?

时间:2010-06-13 07:57:37

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

我正在尝试建立一个基本的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;

有没有人有任何想法?

5 个答案:

答案 0 :(得分:6)

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

如果您使用qmake生成您的视觉工作室项目,您的所有问题都将消失,生活将变得甜蜜。大概!

我正在使用开放的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

答案 1 :(得分:2)

您无法在VC ++的Express版本上安装Qt VS插件。假设您已经编译了moc,还需要确保在链接时包含相应的库(* .lib文件)。这属于项目属性>链接器>输入>额外的依赖关系。

您至少需要qtcore4.lib。

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

答案 2 :(得分:2)

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

答案 3 :(得分:0)

您是否先使用qmake创建了visual studio项目?问题似乎是moc编译。你有安装的qt插件和环境变量中的qt路径吗?你可以加你好世界代码,这样我可以看一下吗?

答案 4 :(得分:0)

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

生成QT元类:

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

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

  • 多选您的头文件,然后右键单击头文件,单击属性。

    • 更改"项目类型"来自" C / C ++ Header"到"自定义构建工具"。
    • 将命令行设置为:moc.exe "%(FullPath)" > "$(ProjectDir)MetaObjects\moc_%(Filename).cpp"
    • 将说明设为:QT: Generate $(ProjectDir)MetaObjects\moc_%(Filename).cpp(可选)
    • 将输出设置为:$(ProjectDir)MetaObjects\moc_%(Filename).cpp
  • 运行Build只是为了让它生成元对象代码
  • 将生成的C ++文件从Project Directory Metaobjects文件夹添加到项目中