精通
英语
和
开源
,
擅长
开发
与
培训
,
胸怀四海
第一信赖
服务方向
联系方式
近期使用一个C++MFC开源项目,遇到了C++开源项目字符串编码问题和MFC项目字符串编码问题,作者在初期版本里没有提供兼容Unicode方式来兼容处理字符串,让用户觉得不满意,后来作者重新编写了代码才进行了兼容。对于高级语言来说,分ANSI和Unicode编码是必须处理的事,但是现在快速语言开发流行,无形中带来了压力,程序员都想省事,字符串编码需要特别照顾,自然觉得累。
在VS2019的MFC项目里,还是对字符集进行了区分,分为多字节和Unicode。所以,大家为了兼容,使用_T处理常量,使用TCHAR来指定字符串类型。至于wstring,有必要时用就用。
提问:
应该如何去做转换?
我使用 LPCTSTR 和 TCHAR 传递所有代码,但必须修改 dll...
打开文件有问题...
DFXReadFile函数里fopen调用无法将类型LPCTSTR 转换为 wchar_t
当我使用头文件 atlbase.h 时,编译器给我一个错误
解答:
尝试CadIO.dll的Unicode版本
实际上,如果您尝试制作 Unicode 发行版,它将失败,因为代码不处理TCHAR 字符,我认为必须忘记项目的dll 并生成一个包含所有内容的新项目源代码作为静态库,然后将所有字符转换为 TCHAR 并进行适当的转换。主要问题可能是在打开文件,读取和写入数据,所以需要一些工作来做到这一点
把这段代码作为一个dll,是一个可怕的错误,绘制文件需要速度,尤其是大文件,作者应该将此示例作为静态库发布,它也很容易修复错误和问题
我制作了“CadIO.dll”的 Unicode 版本和“Test.exe”的 Unicode 版本,能够起作用,使用的vs2008