我在使用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文件的开始部分放上版本号。