vc6开发环境由MBCS改成UNICODE

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vc6开发环境由MBCS改成UNICODE相关的知识,希望对你有一定的参考价值。

我在使用VC6进行程序开发的时候,遇到这个问题:

比如捷克语言,俄语等等,在显示的时候总是显示乱码(????),在编辑框中显示,或者通过ADO导入都是显示乱码,这个问题困了我好久,最后比对开发环境,查出原因,是使用字符集的问题。

vc6开发环境默认使用的MBCS字符集(Multiple Byte Character Set),更改为UNICODE字符集就可以解决这个问题。设置方法如下:

1、【project】-【Settings】,在【C/C++】页面,选择"Category"后的【General】,然后在页面的中下部的"Preprocessor definitions:"更改_MBCS为_UNICODE,UNICODE

2、【project】-【Settings】,在【Link】页面,选择"Category"后的【Output】,然后在页面的中上部的"Entry_point symbol:"下面的编辑框中输入: wWinMainCRTStartup


原因如下:

Output:Base Address可以改变程序默认的基地址(EXE文件默认为0x400000,DLL默认为0x10000000),

操作系统装载一个程序时总是试着先从这个基地址开始。Entry-Point Symbol可以指定程序的入口地址,一般为一个函数名(且必须采用__stdcall调用约定)。

一般Win32的程序,EXE的入口为WinMain,DLL的入口为DllEntryPoint;

最好让连接器自动设置程序的入口点。默认情况下,通过一个C的运行时库函数来实现:

     控制台程序采用mainCRTStartup (或wmainCRTStartup)去调用程序的main (或wmain)函数;            Windows程序采用WinMainCRTStartup (或 wWinMainCRTStartup)调用程序的WinMain (或 wWinMain,必须采用__stdcall调用约定);

     DLL采用_DllMainCRTStartup调用DllMain函数(必须采用__stdcall调用约定)。

Stack allocations,用以设置程序使用的堆栈大小(请使用十进制),默认为1兆字节。Version Information告诉连接器在EXE或DLL文件的开始部分放上版本号。

本文出自 “爱我所爱” 博客,请务必保留此出处http://tommy.blog.51cto.com/113624/1743358

以上是关于vc6开发环境由MBCS改成UNICODE的主要内容,如果未能解决你的问题,请参考以下文章

字符串转换:MBCS <-> UNICODE 内有多个 \0

有没有办法可以将 unicode 文本添加到 MBCS MFC 菜单

VC6.0编程后生成的exe文件无法单独运行完

在 VC6 编译器中打开包含 Unicode 字符的文件名

如何在 VC6 中查看 unicode CString 的值?

MFC CEdit 将非 ascii 字符转换为 ascii