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

ogg*_*ter 3 qt character-encoding visual-studio-2010 qt-creator visual-c++

我正在尝试使用Microsoft Visual C++编译器10.0(x86)在Qt Creator中编译遗留代码,我收到了经典错误:

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

而不是编辑代码(我不应该做的事情,它是第三方SDK),解决方案是进入Visual Studio常规设置并将字符集更改为

'使用多字节字符集'

(如此此处所述)

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

lau*_*ent 9

快速检查Visual Studio,这是我发现的:

如果选项是Use Unicode Character Set,您将拥有以下两个编译器选项:

/D "_UNICODE" /D "UNICODE"
Run Code Online (Sandbox Code Playgroud)

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

/D "_MBCS"
Run Code Online (Sandbox Code Playgroud)

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

  • @oggmonster.我能够通过将以下内容添加到我的.pro文件中来删除UNICODE定义并添加_MBCS.DEFINES - = UNICODE DEFINES + = _MBCS (5认同)
  • 看来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没有给你一个UI选项来改变像Visual Studio那样. (3认同)