⑴ 如何确定VS编译器版本
MSVC++ 11.0 _MSC_VER = 1700 (Visual Studio 2011)
MSVC++ 10.0 _MSC_VER = 1600 (Visual Studio 2010)
MSVC++ 9.0 _MSC_VER = 1500 (Visual Studio 2008)
MSVC++ 8.0 _MSC_VER = 1400 (Visual Studio 2005)
MSVC++ 7.1 _MSC_VER = 1310 (Visual Studio 2003)
MSVC++ 7.0 _MSC_VER = 1300 (Visual Studio 2002)
MSVC++ 6.0 _MSC_VER = 1200
MSVC++ 5.0 _MSC_VER = 1100
example:
#if (_MSC_VER == 1300) //vc7
#import "acax16ENU.tlb" no_implementation raw_interfaces_only named_guids
#elif (_MSC_VER == 1200) //vc6
#import "acad.tlb" no_implementation raw_interfaces_only named_guids
#elif (_MSC_VER == 1400) //vc8
#import "acax17ENU.tlb" no_implementation raw_interfaces_only named_guids
#elif (_MSC_VER == 1500) //vc9
#import "acax18ENU.tlb" no_implementation raw_interfaces_only named_guids
#endif
⑵ 有MSVC编译器的命令行大全么
1 cl,MSVC编译器
/c:只编译链接
/Za:禁止语言扩展
/link:链接指定的模块或给链接器传递参数
/Od:禁止优化
/O2:以允许速度最快为目标优化
/O1:以最节省空间为目标优化
/GR或/GR-:开启或关闭RTTI
/Gy:开启函数级别链接
/GS或/GS-:开启或关闭
/Fa:输出汇编文件
/E:只进行预处理并且把结果输出
/I:指定头文件包含目录
/Zi:启用调试信息
/LD:编译产生DLL文件
/LDd:编译产生DLL文件(调试版)
/MD:与动态多线程版本运行库MSVCRT.LIB链接
/MDd:与调试版动态多线程版本运行库MSVCRTD.LIB链接
/MT:与静态多线程版本运行库LIBCMT.LIB链接
/MTd:与调试版静态多线程版本运行库LIBCMTD.LIB链接
2 link,MSVC链接器
/BASE:address:指定输出文件的基地址
/DEBUG:输出调试模式版本
/DEF:filename:指定模块定义文件.DEF
/DEFAULTLIB:library:指定默认运行库
/DLL:产生DLL
/ENTRY:symbol:指定程序路口
/EXPORT:symbol:指定某个符号位导出符号
/HEAP:指定默认堆大小
/LIBPATH:dir:指定链接时库搜索路径
/MAP:产生链接MAP文件
/NODEFAULTLIB:禁止默认运行库
/OUT:指定输出文件名
/RELEASE:已发布版本产生输出文件
/STACK:指定默认栈大小
/SUBSYSTEM:指定子系统
3 mpbin,MSVC的COFF/PE文件查看器
/ALL:显示所有信息
/ARCHIVEMEMBERS:显示LIB文件中的所有目标文件列表
/DEPENDENTS:显示文件的动态链接依赖关系
/DIRECTIVES:显示链接器指示
/DISASM:显示反汇编
/EXPORTS:显示导出函数表
/HEADERS:显示文件头
/IMPORTS:显示导入函数表
/LINENUMBERS:显示行号信息
/SECTION:name:显示某个段
/SECTION:显示文件概要信息
/SYMBOLS:显示文件符号表
/TLS:显示线程局部存储TLS信息
⑶ 如何用msvc命令行编译程序
cl.exe是微软MSVC的编译器。既然你使用Qt5.3.0,那么你电脑上应该装有VS2013吧。如果有,那么cl.exe应该位于你的VS的安装路径下的VC\bin子文件夹下。把这个路径添加到环境变量中,再make试试。
⑷ QT中如何把msvc编译器换成mingw编译器
把msvc的Qt卸载,然后在官网下载自带MinGW的Qt版本,傻瓜式的next。MinGW版本的Qt很容易安装
⑸ 如果仅考虑 Windows 平台,不用 msvc 而去用 gcc 的理由有哪些
1、大部分跨平台的大型C程序(如ffmpeg)早已完全使用C99标准编写,而msvc的编译器CL直到2015年才较好地支持了C99;
2、msvc的侧重点是对C++标准的支持以及对Windows SDK的支持,而不是对C语言的支持。
3、msvc的编译器很难用于生成和环境无关的代码,用来编译像Bootloader、系统内核之类的特殊程序时会有麻烦。
4、msvc的编译器CL的命令行参数和gcc、clang等几乎完全不兼容,所有的makefile和其他脚本都必须专门为其做较大改动。
5、msvc工具链(编译器、链接器、nmake等)的ABI和gnu工具链的只有单向兼容,无法链接由gnu工具链生成的库。
⑹ GCC/G++,ICC,Clang,MSVC,BCC等C/C++编译器有什么特长和不足
clang编译速度快,但是貌似编译结果运行相对会慢。功能更新一般也比较快。
g++编译速度比clang慢,编译结果运行貌似比clang快。功能更新稍慢。
vc这几年没编译过大工程,感觉上编译速度在clang和g++之间。以过去的经验g++和vc编译结果运行速度差不多。功能更新上就是一坨屎。但是在Windows上写点正经东西你可能不得不用它,相对的你也只能在Windows上用它。
icc很久没用过,过去印象编译速度很慢,运行速度最快但是感觉有点得不偿失。最大的问题是这东西要钱,前三个都是免费的。
bcc直接无视就好了。
⑺ qtcreater 怎么设置msvc编译
该方法可以使用在win 8.
1、编译Qt 5.0.2,编译器为Msvc 2012
2、下载Cdb.exe,这个是给控制台调试代码用的,Msvc用的调试器是WinDbg,所以安装vc是没有Cdb的,网址:
注意:现在上面说的网址已经不能用了,沿用上面的网址进去下载 WDK 8,这个对应的VS 2012 for win 7, 这个安装很慢。或者下载2010的对应的CDB,下载网址:
C:\WinDDK\7600.16385.1\Debuggers
这个下面是有CDB的。
3、完成后安装。
4、打开Qt Creator,在"工具"->"选项"里面如下设置地方点击自动检测即可:
⑻ 为什么msvc类的编译器默认的调用约定是cdecl
gcc的默认函数调用约定是stdcall。 GNU编译器套件(GNU Compiler Collection)包括C、C++、Objective-C、Fortran、Java、Ada和Go语言的前端,也包括了这些语言的库(如libstdc++、libgcj等等)。GCC的初衷是为GNU操作系统专门编写的一款编译器。
⑼ 有关MSVC编译器和MinGW编译器之间的差异如何
MSVC不能跨平台 MSVC比MinGW快 两个编译器的区别,各自带的标准库的区别。
⑽ 如何单独提取出MSVC2017编译器并在其他IDE使用
可以参考xmake的实现,xmake里面就是自动探测系统安装的vs编译环境,然后自动进行构建,主要还是通过加载vcvarsall.bat,来导入path, lib, include等环境变量,然后就可以直接调用cl.exe/link.exe等编译器、链接器进行编译链接了。。
对于vcvarsall.bat的探测,vs2017以前的版本,可以通过VSXXXCOMNTOOLS环境变量来发现,例如:VS140COMNTOOLS对应 vs2015。。但是vs2017之后就没这个环境变量了,因此更加通用可靠的探测方式,是从注册表中查找,例如,vs2017的注册表项:
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\SxS\\VS7;15.0)\\VC\\Auxiliary\\Build
vs2017之前版本路径如下:
HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\VisualStudio\\SxS\\VS7;14.0)\\VC
64bits版本,Microsoft之前再加个Wow6432Node。。