工程设置成UNICODE,为何TCHAR被认成char?

假正经的班长 2012-03-01 07:39:06
如题,其中一个工程为对话框窗口程序,使用UNICODE编码,调用一个DLL,也设置成UNICODE字符集,但是调试发现,在一个公用的结构体中的TCHAR类型的字段,被窗口程序认成wchar_t, 但却被DLL认成了char, 这是为何?字符集确定设置没问题,纠结死了
...全文
104 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
假正经的班长 2012-03-03
  • 打赏
  • 举报
回复
原来是工程的Preprosser设置有问题,再告诉大家我是怎么解决的,我在commandline里手动添加/D "_UNICODE" /D "UNICODE"也可以,但不是长久之计,还是Preprosser的问题,如果大家也碰到了,重建一个新工程比对一下就好,谢谢大家的回复
chayedanwc 2012-03-02
  • 打赏
  • 举报
回复
请在tchar.h或MSDN中看TCHAR的类型定义,它是一种根据编译器来兼容Unicode和多字符的数据类型。

TCHAR
A WCHAR if UNICODE is defined, a CHAR otherwise.
This type is declared in WinNT.h as follows:

#ifdef UNICODE
typedef WCHAR TCHAR;
#else
typedef char TCHAR;
#endif

用户 昵称 2012-03-02
  • 打赏
  • 举报
回复
UNICODE,与_UNICODE都要设置。
  • 打赏
  • 举报
回复
确定呢都是UNICODE吗
zgl7903 2012-03-01
  • 打赏
  • 举报
回复
DLL也得设置成UNICODE环境 重新编译

1,649

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 非技术类
社区管理员
  • 非技术类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧