关于几个如何移植Embedded Visual C++ 3.0 / 4.0 MFC程序到VS2005的几个注意点


微软中国技术中心
Richard Zhang
2006.6

MSDN 中文网中有一篇文章叫"循序渐进从Embedded Visual C++移植到Visual Studio 2005",里面介绍的方法是新建一个MFC工程,然后把早先的MFC Source File添加到你的工程中,这种方法略为麻烦,下面介绍一个比较简单的方式进行移植。
   在Windows Mobile 5.0里,由于基于效率考虑,早先的一些MFC Class不再支持,所以会带来一些编译上的麻烦,如CCeCommandBar等等,所以要先进行一些移植工作。
   通常情况下,EVC的Project Settings和Visual Studio 2005里的默认Settings是不一样的,通常我
们首先遇到的错误信息是这样的:
fatal error C1189: #error :  Building MFC application with /MDDrinks (CRT dll version) requires MFC shared dll version. Please #define _AFXDLL or do not use /MDDrinks
这是由于VS2005默认的MFC程序是使用动态MFC库(Use MFC in a Shared DLL)来链接的而动态MFC库使用的是Multi-threaded DLL (/MD),由于XP对于PE文件格式监测更加严格,所以要进行如下的项目设置修改:
[Project Properties] -->[Configuration Properties] --> [c/c++] -->[Code Generation]-->[RunTime Library]这里要改成[Multi-threaded (/MT)]
再编译,通过了,但出现了一个Link错误:
corelibc.lib(wwinmain.obj) : error LNK2019: unresolved external symbol wWinMain referenced in function wWinMainCRTStartup
现在要做如下修改,因为程序默认Entry Point找不到了,重新打开项目设置:
[Project Properties] -->[Configuration Properties] --> [Linker]-->[Advanced]-->[Entry Point]-->把[wWinMainCRTStartup]改成[WinMainCRTStartup]

再编译,通过了。另外,Visual Studio2005总会提示你例如WINVER没定义等等,但会有一个Default值,不影响编译,还有就是会有提示过期的警告信息,如果太多的话可以加上如下的编译控制模块加以屏蔽:
#if (_MSC_VER >= 1400) /* VC8+ (VS2005) */
#pragma warning(disable : 4996) /* Disable all deprecation warnings */
#endif /* VC8+ (VS2005) */
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值