3

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

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

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

'使用多字节字符集'

(如此此处所述)

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

4

2 回答 2

9

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

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

/D "_UNICODE" /D "UNICODE"

但是,如果它是Use Multi-Byte Character Set,您将拥有:

/D "_MBCS"

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

于 2012-10-04T08:00:59.090 回答
1

它必须在您的代码中调用一些 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

于 2012-10-17T09:26:37.587 回答