Visual C++ 2010 Express:如何与Qt一起使用?

13
我对在Visual Studio Express中使用Qt感到困惑。大多数在线搜索结果都是关于使用以下指令编译Qt的说明:
安装MSVC2005或MSVC2008 安装最新的Platform SDK(@ MSDN:“Windows Server 2003 R2平台SDK”) 从Platform SDK中,您至少需要安装基本+互联网选项 然后,下载并提取最新的快照或预览版本到D:\ Qt \ 4.x.x 使用加载了MSVC设置的控制台(请参见MSVC工具菜单),并转到Qt目录 输入“configure -platform win32-msvc2005”,不带引号 那将为您构建所需的项目文件 之后,只需运行“nmake”并喝很多咖啡即可
然后,将D:\ Qt \ 4.x.x \ bin和D:\ Qt \ 4.x.x \ lib添加到路径环境变量中,您将能够从系统的任何地方使用此版本的Qt。后者也可以添加到MSVC选项中的库部分。
(来自http://www.qtcentre.org/threads/11710-Visual-Studio-2005-Express
然而,当我前往Qt的下载页面(http://qt.nokia.com/downloads)时,有一个标记为“Qt libraries 4.7.1 for Windows (VS 2008, 228 MB)”的Visual Studio下载选项。我感到困惑,我是否仍需构建它?或者它已经构建好了?

1
Express不支持插件,您需要零售版。 - Hans Passant
@indienick:这不是不可能的事情,但我曾经走过这条路,需要使用一个库,我认为它使用了一些非标准的C++,最初我无法使其工作。具体来说,就是“__declspec(novtable)”,根据微软的说法,这是一个Microsoft特定的扩展属性http://msdn.microsoft.com/en-us/library/k13k85ky%28v=vs.71%29.aspx。我想使用Microsoft编译器解决这个问题。 - User
3
如果你下载并安装Qt Creator,你应该可以更新一些设置,使其使用2010编译器和你刚编译的Qt库。这对我来说比使用插件或构建文件夹中的工具要好得多。 - Fat Elvis
@Fat Elvis:好的,我正在尝试在Qt Creator中编译我的hello world应用程序,并包含第三方库的头文件和库。然而,我得到了“UINT”未声明的标识符错误。 - User
解决了UINT问题。需要添加#include <Windows.h>。 - User
显示剩余2条评论
4个回答

4
使用从qt(http://get.qt.nokia.com/qt/source/qt-win-opensource-4.7.1-vs2008.exe)下载的可执行文件似乎无法与Visual Studio 2010一起使用。我尝试了从命令行构建一个简单的“hello world”程序,但无法运行。我会重复之前回答中的评论。

我尝试了doc.qt.nokia.com/4.7/gettingstartedqt.html中的“hello world”示例。我能够构建项目并生成exe文件。然而,该exe无法运行并生成一个关于“side-by-side configuration is incorrect…”的系统错误对话框。我运行了SxsTrace,它显示:

...
INFO: Begin assembly probing.
INFO: Did not find the assembly in WinSxS.
INFO: Attempt to probe manifest at C:\Windows\assembly\GAC_32\Microsoft.VC90.DebugCRT\ 9.0.21022.8__...\Microsoft.VC90.DebugCRT.DLL.
INFO: Attempt to probe manifest at C:\qthello\debug\Microsoft.VC90.DebugCRT.DLL.
INFO: Attempt to probe manifest at C:\qthello\debug\Microsoft.VC90.DebugCRT.MANIFEST.
INFO: Attempt to probe manifest at C:\qthello\debug\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.DLL.
INFO: Attempt to probe manifest at C:\qthello\debug\Microsoft.VC90.DebugCRT\Microsoft.VC90.DebugCRT.MANIFEST.
INFO: Did not find manifest for culture Neutral.
INFO: End assembly probing.
ERROR: Cannot resolve reference Microsoft.VC90.DebugCRT,processorArchitecture="x86", publicKeyToken="...",type="win32",version="9.0.21022.8".
ERROR: Activation Context generation failed.
End Activation Context Generation.

对我来说,这似乎是在尝试使用我没有的VS2008。这似乎是有道理的,因为下载是针对VS2008的。
当我提出这个SO问题时,我正在按照我的问题中的说明编译qt 4.7.1(但将win32-msvc2010作为我的平台目标)。编译完成后,我重建了hello world项目,exe运行正常。因此,似乎答案是为了与Visual Studio Express 2010一起使用,您当前需要编译(至少在Qt发布VS2010下载选项之前)。不过,我认为如果您使用的是VS2008,则不需要编译。

3
由诺基亚提供的Qt二进制文件针对Windows目标使用MinGW或Visual Studio 2008进行编译,均用于编译32位可执行文件。如果您需要VS 2005(32位)的Qt二进制文件,则可以在其存档中找到它们。
对于其他所有内容,您需要自己编译Qt,特别是为:
- Visual Studio 2008 64位 - Visual Studio 2008 Express Edition 64位:您需要Windows SDK 7.0,该SDK提供了64位编译器,并使用这些编译Qt。 - Visual Studio 2010 32位和64位
通常情况下,您不能链接使用不同编译器编译的库,即使用使用VC 9.0(VS 2008)32位构建的Qt二进制文件并将其链接到使用VC 10.0(VS 2010)32位构建的可执行文件。

0

关于这个问题,我来更新一下。

下载QTSDK并使用cmake代替qmake后,一切看起来都运行得很顺利。除了QTSDK的安装程序没有更新qmake.exe的路径,你需要手动更改。

已经测试过QtSDK 4.8和Visual Studio Express 2010。


-2

http://qt.nokia.com/downloads 有一个名为qt-vs-addin-1.1.7.exe(57 MB)的链接。

你可能也需要它...

我认为你不需要编译库,因为现在有一个下载链接...

所以下载228 MB的库和57 MB的插件就可以了。

免责声明:我还没有使用MSVC,如果可以请告诉我是否有效。


1
由于我正在使用Visual Studio的Express版本,我认为这个插件不会起作用。 - User
我尝试了http://doc.qt.nokia.com/4.7/gettingstartedqt.html上的hello world示例。我能够构建项目并生成exe文件。然而,exe无法运行并生成一个关于“side-by-side configuration is incorrect…”的系统错误对话框。我运行了SxsTrace,它显示ERROR: Cannot resolve reference Microsoft.VC90.DebugCRT,processorArchitecture="x86",publicKeyToken="..",type="win32",version="9.0.21022.8"。在我看来,它似乎正在尝试使用VS2008(我没有)。我想这是有道理的,因为下载是针对VS2008的。 - User
@User - 是的,我相当确定你需要重新构建。并不是非常确定,这就是为什么我没有回答...但是,是的...我认为你需要构建Qt才能获得与2010兼容的版本。您还可能需要更改/Zwchar_t开关:https://dev59.com/AW855IYBdhLWcg3wIAka - Edward Strange

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接