实现wince console Application(EVC 控制台程序)的方法
2011-07-21 08:55
375 查看
今天在移植一个C++代码到EVC上,出现了如下一些错误:
"corelibc.lib(pegwmain.obj) : error LNK2019: unresolved external symbol WinMain referenced in function WinMainCRTStartup",和"corelibc.lib(wwinmain.obj) : error LNK2019: unresolved external symbol wWinMain referenced in function wWinMainCRTStartup"。
解决这些错误又让我知道了如何在EVC上编译wince console Application(EVC 控制台程序和了解main()、WinMain()、wmain()、 _tmain()、DllMainCRTStartup 、mainWCRTStartup 、WinMainCRTStartup 这些的驱别,现总结整理如下:
1、今天在移植一个C++代码到EVC上,入口函数是int main (int argc, char ** argv),创建EVC WCE Application工程,并包含相关代码,编译并修改了一些错误,最后的错误如下:"corelibc.lib(pegwmain.obj) : error LNK2019: unresolved external symbol WinMain referenced in function WinMainCRTStartup",按照一些网友的说法,又在属性—〉Linker—〉Anvanced—〉EntryPoint将
WinMainCRTStartup 更改为 wWinMainCRTStartup,结果仍然出错为
"corelibc.lib(wwinmain.obj) : error LNK2019: unresolved external symbol wWinMain referenced in function wWinMainCRTStartup",分析程序和错误原因,是因为WinMainCRTStartup 或wWinMainCRTStartup 会调用WinMain 或wWinMain,而在移植的C++代码没有相应的实现,即win32程序是以一个WinMain函数作为程序的进入点,主程序为Winmain,不是main,所以出错。
由于现在的这个程序是控制台程序,所以我就想创建wince console Application,但在EVC上没有这个wce console Application,所以在网上查找相关资料,总算知道如何在EVC上创建控制台程序,
2、如何在EVC上创建控制台程序
Below are steps to write a console application using eVC:
Step1: Open eVC, and create a new project: File --> New... --> WCE Application --> OK.
Step2: Choose "An empty project"
Step3: Create a new C++ source file, and in that file, add #include "windows.h"
Step4: Moreover add the following codes in above C++ source file as entry point:
int WINAPI _tmain(int argc, char ** argv)
{
printf("Hello mike!");
return 0;
}
Step5: Project --> Settings --> Link tab --> Category = Output-->Entry-point symbol: WinMainCRTStartup ==> mainWCRTStartup
最后编译工程就可以了。
3、整理收集的资料
win32程序是以一个WinMain函数作为程序的进入点,而在你的程序中无法找到这个函数,所以无法生成可执行文件。Win32程序的主程序为Winmain,不是main.
main()是WINDOWS的控制台程序(32BIT)或DOS程序(16BIT), 是c/c++的标准入口函数名
WinMain()是WINDOWS的GUI程序, 是windows api窗体程序的入口函数
wmain()是UNICODE版本的main(),
_tmain()是个宏,如果是UNICODE则他是wmain()否则他是main()
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
"corelibc.lib(pegwmain.obj) : error LNK2019: unresolved external symbol WinMain referenced in function WinMainCRTStartup",和"corelibc.lib(wwinmain.obj) : error LNK2019: unresolved external symbol wWinMain referenced in function wWinMainCRTStartup"。
解决这些错误又让我知道了如何在EVC上编译wince console Application(EVC 控制台程序和了解main()、WinMain()、wmain()、 _tmain()、DllMainCRTStartup 、mainWCRTStartup 、WinMainCRTStartup 这些的驱别,现总结整理如下:
1、今天在移植一个C++代码到EVC上,入口函数是int main (int argc, char ** argv),创建EVC WCE Application工程,并包含相关代码,编译并修改了一些错误,最后的错误如下:"corelibc.lib(pegwmain.obj) : error LNK2019: unresolved external symbol WinMain referenced in function WinMainCRTStartup",按照一些网友的说法,又在属性—〉Linker—〉Anvanced—〉EntryPoint将
WinMainCRTStartup 更改为 wWinMainCRTStartup,结果仍然出错为
"corelibc.lib(wwinmain.obj) : error LNK2019: unresolved external symbol wWinMain referenced in function wWinMainCRTStartup",分析程序和错误原因,是因为WinMainCRTStartup 或wWinMainCRTStartup 会调用WinMain 或wWinMain,而在移植的C++代码没有相应的实现,即win32程序是以一个WinMain函数作为程序的进入点,主程序为Winmain,不是main,所以出错。
由于现在的这个程序是控制台程序,所以我就想创建wince console Application,但在EVC上没有这个wce console Application,所以在网上查找相关资料,总算知道如何在EVC上创建控制台程序,
2、如何在EVC上创建控制台程序
Below are steps to write a console application using eVC:
Step1: Open eVC, and create a new project: File --> New... --> WCE Application --> OK.
Step2: Choose "An empty project"
Step3: Create a new C++ source file, and in that file, add #include "windows.h"
Step4: Moreover add the following codes in above C++ source file as entry point:
int WINAPI _tmain(int argc, char ** argv)
{
printf("Hello mike!");
return 0;
}
Step5: Project --> Settings --> Link tab --> Category = Output-->Entry-point symbol: WinMainCRTStartup ==> mainWCRTStartup
最后编译工程就可以了。
3、整理收集的资料
win32程序是以一个WinMain函数作为程序的进入点,而在你的程序中无法找到这个函数,所以无法生成可执行文件。Win32程序的主程序为Winmain,不是main.
main()是WINDOWS的控制台程序(32BIT)或DOS程序(16BIT), 是c/c++的标准入口函数名
WinMain()是WINDOWS的GUI程序, 是windows api窗体程序的入口函数
wmain()是UNICODE版本的main(),
_tmain()是个宏,如果是UNICODE则他是wmain()否则他是main()
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
相关文章推荐
- EVC移植问题和编译wince console Application(EVC 控制台程序)的方法
- WinCE C#程序,控制启动时仅仅能启动一个程序,使用相互排斥量来实现,该实现方法測试通过
- Console(控制台)程序暂停查看结果方法
- 在控制台程序中Application.Documents.Open方法失效
- 在控制台程序中Application.Documents.Open方法失效
- Delphi中利用管道重定向实现对控制台(Console)程序的操作
- 使用控制台程序寄宿wcf服务时,不正确使用Console.Read()方法导致服务寄宿失败
- .Net Remoting 事件回调 Client 函数方法完整实例: C# 实现控制台网络聊天室 (Console Remoting ChatRoom)
- 自己开console的方法,适用于在win32 非console程序里使用控制台
- 用PHP程序实现支持页面后退的两种方法
- 控制台程序使用方法简要教程
- iphone程序中实现截屏的一种方法
- js获取程序执行的时间长短 控制台之console。
- Java实例 定义任务的一个发射小程序 实现Runnable接口并编写run()方法
- super()在程序中的实现与Object类中的toString()方法的实现
- caffe 实践程序2——用细分的方法实现caffe中cifar100的识别
- 在GUI程序中使用控制台的两种方法
- 让Windows Mobile程序实现全屏的方法
- VC Console(控制台)程序如何隐藏CMD窗口
- android程序安装后在模拟器上不显示,并且控制台显示The launch will only sync the application package on the device!