引言
VS2005 对很多人来讲很陌生,它也是引发非议很多的IDE,大致罗列一下:
程序入口
随便建立一个WINDOWS(测试过MFC应用)程序,VS2005默认为UNICODE字符集,如果要改为非UNICODE字符集时会出现如下链接错误:
msvcrtd.lib(wcrtexew.obj) : error LNK2019: unresolved external symbol _wWinMain@16 referenced in function ___tmainCRTStartup
更改Linker/Advanced/Entry Point为 WinMainCRTStartup 即可。
程序入口有四种形式
以上讨论的关键是对不同字符集和不同子系统应用程序的不理解而引发的一些编译链接问题,尤其是字符集问题,它是很令人头痛的问题,下面是我遇到的其中之一( 理解数据对齐中作了部分讨论)。
一) VS2005中CString已经与VC6中的不同了,它的字符“缓冲”用的是宽字符。这里使用UNICODE字符集的工程CString没有问题,而对于非UNICODE的应用不能正常从资源中载入中文字符。
导致原因是中文转换为MBCS字符集时出错,或许转换函数(WideCharToMultiByte)需要一些本地语言区域等的设置。我也没有完美的解决方案,老的工程中有很多这样烦人的东西是他们很难被移植的VS2005中。慢慢熟悉吧。
VS2005 对很多人来讲很陌生,它也是引发非议很多的IDE,大致罗列一下:
- 他对C++标准和C++模版的支持很好,如:for(int i; i < 10; ++i)变量i作用域为for语句块,支持嵌套模版参数等。
- 它的编译报错是众多编译器中非常友好的,优化之类那是自然的了(不太清楚,不敢妄言)。
- 占用内存过多,启动太慢。
- 与老版本程序兼容不好,很多系统库做了改进,如:MFC,ATL。
- VS2005编译的程序部署的困难(不太清楚一些运行期库的依赖,VS2005编译的程序常常无法在一些没安装VS2005的系统上运行)。
程序入口
随便建立一个WINDOWS(测试过MFC应用)程序,VS2005默认为UNICODE字符集,如果要改为非UNICODE字符集时会出现如下链接错误:
msvcrtd.lib(wcrtexew.obj) : error LNK2019: unresolved external symbol _wWinMain@16 referenced in function ___tmainCRTStartup
更改Linker/Advanced/Entry Point为 WinMainCRTStartup 即可。
程序入口有四种形式
- UNICODE Windows 为wWinMainCRTStartup
- UNICODE Console为wmainCRTStartup
- 非UNICODE Windows为WinMainCRTStartup
- 非UNICODE Console为mainCRTStartup
以上讨论的关键是对不同字符集和不同子系统应用程序的不理解而引发的一些编译链接问题,尤其是字符集问题,它是很令人头痛的问题,下面是我遇到的其中之一( 理解数据对齐中作了部分讨论)。
一) VS2005中CString已经与VC6中的不同了,它的字符“缓冲”用的是宽字符。这里使用UNICODE字符集的工程CString没有问题,而对于非UNICODE的应用不能正常从资源中载入中文字符。
导致原因是中文转换为MBCS字符集时出错,或许转换函数(WideCharToMultiByte)需要一些本地语言区域等的设置。我也没有完美的解决方案,老的工程中有很多这样烦人的东西是他们很难被移植的VS2005中。慢慢熟悉吧。