用EVC编译wince console方式的应用程序

来源:互联网 发布:linux tgz解压命令 编辑:程序博客网 时间:2024/04/28 05:08

应用EVC的appwizard生成一个空的project
加入测试代码如下:
#include <windows.h>

int WINAPI
_tmain(int argc, char ** argv)
{
 wprintf(L"Hello, Wince console./r/n");
 return 0;
}
编译这个evc工程报错
Linking...
corelibc.lib(pegwmain.obj) : error LNK2019: unresolved external symbol _WinMain referenced in function _WinMainCRTStartup
emulatorDbg/console.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

console.exe - 2 error(s), 0 warning(s)

报错的原因是入口有问题,WinMainCRTStartup在CE的unicode系统上应该是mainWCRTStartup。
到中project Settings将Link >> Output >> entry-point symbol改为mainWCRTStartup。
ReBuild,OK。

D:/WINCE500/PUBLIC/COMMON/CESYSGEN/makefile中解释了CE下几个Entry Point
###################################################################################
#
# STEP-4: Add your module to exactly ONE of the following rules, choosing your
#         DLL or EXE entry point. NOTE: DO NOT create new rules
#
# DllEntry/DllMain -- calls entry supplied by module. Does NOT call C++ static ctors/dtors
# DllMainCRTStartup - calls C++ static ctors & dtors. Then calls module's DllMain
# WinMain -- calls module's standard EXE entry point. Does NOT call C++ static ctors/dtors
# WinMainCRTStartup -- Calls C++ static ctors, then calls module's WinMain
# mainWCRTStartup -- for console apps whose entry is wmain(int argc, WCHAR **argv). Also calls C++ ctors/dtors
# mainACRTStartup -- for console apps whose entry is main(int argc, char **argv). Also calls C++ ctors/dtors
#
#################################################################################


for more infomation
The Console in Your Pocket
Rainer Urian - pocketconsole的作者
http://www.symbolictools.de/public/pocketconsole/developers/articles/console_internals.htm
MSDN
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wcepbguide5/html/wce50grfENTRYEntry-PointSymbol.asp

原创粉丝点击