如何单独提取出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) 启动新的控制台窗口。如何预防?