vs版本与_MSC_VER的对应

同学问到一个问题,没有明白问题的原因。多方查找资料后,发现是程序使用的库与开发环境版本问题。

程序用vs2010编译时,出现错误。

错误	1	error C1189: #error :  "Wrong Compiler. This library does only run with Visual C++ 7.1 and Visual C++ 6. Newer versions are currently not supported."
打开此文件,部分代码如下:

#if !defined _MSC_VER
	#error "Wrong Compiler. This library does only run with Visual C++ 7.1 and Visual C++ 6. To suppress this Error, uncomment this line."
#else
	#if _MSC_VER < 1200
		// older then VC6, too old to use library.
		#error "Wrong Compiler. This library does only run with Visual C++ 7.1 and Visual C++ 6. Older compiler versions are not supported."
	#elif _MSC_VER == 1200
		// VC6
	#elif _MSC_VER == 1300
		// VC70 not supported
		#error "Wrong Compiler. This library does only run with Visual C++ 7.1 and Visual C++ 6. VC7.0 is not supported."
	#elif _MSC_VER == 1310
		// VC71
	#elif _MSC_VER == 1400
		// VC80
	#elif _MSC_VER == 1500
		// VC90
	#else
		#error "Wrong Compiler. This library does only run with Visual C++ 7.1 and Visual C++ 6. Newer versions are currently not supported."
		// other maybe newer compiler ...
	#endif
#endif

然后,查了下_MSC_VER,原来是用来定义编译器的版本。

MS VC++10.0 _MSC_VER=1600(VS2010)
MS VC++9.0 _MSC_VER=1500(VS2008)
MS VC++8.0 _MSC_VER=1400(VS2005)
MS VC++7.0 _MSC_VER=1300
MS VC++7.1 _MSC_VER=1310
MS VC++6.0 _MSC_VER=1200
在程序中加入_MSC_VER宏可以根据编译器版本让编译器选择行的编译一段程序。 例如一个版本编译器产生的lib文件可能不能被另一个版本的编译器调用,那么在开发应用程序的时候,在该程序的lib调用库中放入多个版本编译器产生的lib文件。[1]

此实例就是这个问题,文件中的代码:

#if !defined UDSHL_LIB_NO_LINK
	#if (!defined _MSC_VER || _MSC_VER >= 1500)	// vc80 compiler, and other here
		#pragma warning( disable : 4996) // Disable deprecated warnings.

		#if defined _DEBUG
			#pragma comment ( lib, UDSHL_LIB_DIR "IAT_UDSHL07_vc9d.lib" )
		#else
			#pragma comment ( lib, UDSHL_LIB_DIR "IAT_UDSHL07_vc9.lib" )
		#endif
	#elif (!defined _MSC_VER || _MSC_VER >= 1400)	// vc80 compiler, and other here
		#pragma warning( disable : 4996) // Disable deprecated warnings.

		#if defined _DEBUG
			#pragma comment ( lib, UDSHL_LIB_DIR "IAT_UDSHL07_vc8d.lib" )
		#else
			#pragma comment ( lib, UDSHL_LIB_DIR "IAT_UDSHL07_vc8.lib" )
		#endif
	#elif (!defined _MSC_VER || _MSC_VER >= 1300)	// vc71 compiler, and other here
		#if defined _DEBUG
			#pragma comment ( lib, UDSHL_LIB_DIR "IAT_UDSHL07_vc71d.lib" )
		#else
			#pragma comment ( lib, UDSHL_LIB_DIR "IAT_UDSHL07_vc71.lib" )
		#endif
	#else
		#if defined _DEBUG
			#pragma comment ( lib, UDSHL_LIB_DIR "IAT_UDSHL07_vc6d.lib" )
		#else
			#pragma comment ( lib, UDSHL_LIB_DIR "IAT_UDSHL07_vc6.lib" )
		#endif
	#endif

根据不同的版本选择对应的库(IAT_UDSHL07_vc**.lib)文件。还分为debug和release版。

问题是,如果我只安装了vs2010该怎么运行呢?

更改工程的属性->平台工具集,选择v90后,提示

错误	1	error MSB8010: 指定的平台工具集(v90)需要 Visual Studio 2008。请确保在计算机上安装 Visual Studio 2008。



[1]. _MSC_VER.http://baike.so.com/doc/515910.html

### 回答1: `QMAKE_MSC_VER = 1900` 是一个qmake变量,它用于指定Microsoft Visual C++编译器的版本。具体来说,这个变量的值为1900表示使用的是Visual Studio 2015或更高版本的编译器。 在Qt项目中,使用qmake工具生成Makefile时,可以使用`QMAKE_MSC_VER`变量来指定使用的编译器版本,以确保生成的Makefile与所使用的编译器兼容。如果未指定此变量,则默认使用系统中找到的最新版本的编译器。 总的来说,`QMAKE_MSC_VER = 1900`的作用是指定使用Visual Studio 2015或更高版本的编译器来编译Qt项目。 ### 回答2: QMAKE_MSC_VER = 1900 是一个在Qt工程中用到的变量,它表示了使用的Microsoft Visual Studio(MSVC)编译器的版本号。 在Qt项目中,使用这个变量可以帮助开发者在不同的MSVC编译器版本之间进行切换。通常情况下,QMAKE_MSC_VER 的值会根据使用的MSVC版本自动设置,以确保编译器和Qt库的兼容性。 具体来说,QMAKE_MSC_VER = 1900 可以与MSVC 2015版本(也就是VC14)相对应。这是一个比较早期的版本,而且是用于Qt 5的编译器版本。 当我们在Qt工程中设置了 QMAKE_MSC_VER = 1900,并使用MSVC 2015编译器进行编译时,Qt会根据这个变量的值去寻找正确的库文件,以确保编译和链接的成功。这是因为Qt库会为不同版本的编译器提供不同的预编译库文件,QMAKE_MSC_VER 的值就是用来指定使用哪一个版本的库文件。 总的来说,QMAKE_MSC_VER = 1900 的作用就是告诉Qt使用MSVC 2015编译器,并相应地选择正确的库文件进行编译和链接,从而保证工程的正常运行。 ### 回答3: QMAKE_MSC_VER = 1900 是在使用Qt框架时,用于指定编译器为Microsoft Visual Studio 2015或更高版本的配置参数。在Qt项目的.pro文件中,设置QMAKE_MSC_VER = 1900,可以告诉Qt编译器使用具有相应版本的MSVC编译器进行编译。 这个配置参数的作用是确保Qt代码能够与所选的MSVC编译器版本兼容,并且能够正确地生成可执行文件或库文件。由于每个MSVC编译器版本都有不同的特性和兼容性要求,因此在使用Qt进行跨平台开发时,需要根据所选的MSVC编译器版本进行相应的配置。 QMAKE_MSC_VER = 1900 指定的是MSVC 14.0版本,也就是Microsoft Visual Studio 2015。通过设置这个参数,可以确保Qt编译器使用MSVC 2015进行构建工程,在生成过程中使用相关的编译器选项和链接库,以确保项目能够正确编译并在所选的编译器上正常运行。 总之,QMAKE_MSC_VER = 1900的作用是指定Qt项目使用MSVC 2015编译器进行构建,以确保项目的兼容性和可移植性。这个配置参数是非常重要的,特别是在跨平台开发中,它可以确保Qt项目能够在不同的操作系统和编译器环境下正确编译和运行。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值