如何单独提取出MSVC2017编译器并在其他IDE使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何单独提取出MSVC2017编译器并在其他IDE使用相关的知识,希望对你有一定的参考价值。

参考技术A cl.exe是微软MSVC的编译器。既然你使用Qt5.3.0,那么你电脑上应该装有VS2013吧。如果有,那么cl.exe应该位于你的VS的安装路径下的VC\bin子文件夹下。把这个路径添加到环境变量中,再make试试。

从另一个 IDE (Qt Creator) 为 MSVC 编译器设置字符集

【中文标题】从另一个 IDE (Qt Creator) 为 MSVC 编译器设置字符集【英文标题】:Setting Character set for MSVC compiler from another IDE (Qt Creator) 【发布时间】:2012-10-04 07:50:54 【问题描述】:

我正在尝试使用 Microsoft Visual C++ Compiler 10.0 (x86) 在 Qt Creator 中编译旧代码,但遇到了经典错误:

无法将参数 1 从 'char *' 转换为 'LPCWSTR'

与其编辑代码(我不应该这样做,它是一个 3rd 方 SDK),解决方案是进入 Visual Studio 常规设置并将字符集更改为

'使用多字节字符集'

(如here 和here 所述)

但是,我没有使用 Visual Studio IDE,也没有该设置。所以我需要知道在代码/编译方面实际做了什么设置。它是否设置了编译器标志或#define?如何在 Qt Creator 中实现同样的效果?

【问题讨论】:

【参考方案1】:

在 Visual Studio 中快速检查一下,这是我发现的:

如果选项是使用 Unicode 字符集,您将拥有以下两个编译器选项:

/D "_UNICODE" /D "UNICODE"

但是,如果是使用多字节字符集,您将拥有:

/D "_MBCS"

因此,您要么需要更新命令行并将/D "_UNICODE" /D "UNICODE" 更改为/D "_MBCS",要么在某处#define _MBCS 符号。

【讨论】:

很酷,谢谢,这里的这个页面证实了你所说的msdn.microsoft.com/en-us/library/ey142t48(v=vs.80).aspx Qt 似乎自动为您定义了 UNICODE,并且无法从您的项目中取消定义它。您可以将 /D "_MBCS" 添加到 QMAKE_CXXFLAGS qmake 变量中,但 /D "UNICODE" 和 /D "_MBCS" 最终会作为参数传递给 cl。要使多字节字符集成为 Qt Creator 中的默认设置,您必须为您的 MSVC 设置编辑 qmake.conf 文件,我的位于:C:\QtSDK\Desktop\Qt\4.8.0\msvc2010\mkspecs\win32- msvc2010 在定义行上,您需要删除 UNICODE 并添加 _MBCS。不是一个很好的解决方法,但 Qt Creator 没有像 Visual Studio 那样为您提供 UI 选项来更改它。 @oggmonster。通过将以下内容添加到我的 .pro 文件中,我能够删除 UNICODE 定义并添加 _MBCS。定义 -= UNICODE 定义 += _MBCS【参考方案2】:

它必须在您的代码中调用一些 MFC 函数,这些函数使用“LPTSTR”等, 旧的 .h 文件,可能包括:StdAfx.h,只需编辑它:

#ifdef _MSC_VER

#define assert ASSERT
#define snprintf _snprintf

//remove UNICODE define
#ifdef UNICODE
#undef UNICODE
#endif

#include <afxwin.h>

#endif

那么它会在没有 Unicode 定义的情况下通过, 无需修改\msvc2010\mkspecs\win32-msvc2010\qmake.conf

【讨论】:

在.pro文件中,添加DEFINES *= _AFXDLL _MBCS

以上是关于如何单独提取出MSVC2017编译器并在其他IDE使用的主要内容,如果未能解决你的问题,请参考以下文章

MSVC 19.11 / Visual C++ 2017:大小为 1 和 size_t 类型的初始值设定项列表被误解

如何将 java 源代码保存在 xml 文件中,并在 IDE 中编辑/编译它?

MSVC 编译器 (cl.exe) 启动新的控制台窗口。如何预防?

msvc2010 - 如何建立一个干净的输出目录?

如何使用 ms vc++ 编译器在 netbeans 中构建 dll 文件?

这是 MSVC++ 2017 更新 3 中的编译器错误吗