vc6编写的程序的入口点在哪儿

vc6编写的程序的入口点在哪儿,第1张

这要看你的目标程序的类型是什么或是采用什么开发方式,就比如如果目标是应用程序,开发方式是Win32 SDK 方式,入口点就是 WinMain 函数,如果目标是驱动程序,入口点就是DriverEntry函数,如果你的目标是动态库(*.dll),开发方式是Win32 SDK 方式,入口点就是DllMain函数。

这些所谓的入口函数,随便放在哪个".cpp"里都可以,只要保证函数在工程里的唯一性就可以了,如果你采用MFC方式开发应用程序或动态库,那么基本上不用去关心什么入口,因为很多东西可以在类初始化时去做,只要你找到类的初始化过程就可以了,至于动态库,完全可以忽略这个入口,直接写你静态函数就可以了。

*** 作系统装载应用程序后,做完初始化工作就转到程序的入口点执行。程序的默认入口点实际上是由连接程序设置的,不同的连接器选择的入口函数也不尽相同。在

vc++下,连接器对控制台程序设置的入口函数是maincrtstartup,maincrtstartup

再调用你自己编写的

main

函数;对图形用户界面(gui)程序设置的入口函数是

winmaincrtstartup,winmaincrtstartup

调用你自己写的

winmain

函数。而具体设置哪个入口点是由连接器的/subsystem:选项参数确定的,它告诉 *** 作系统如何运行编译生成的.exe文件。可以指定四种方

式:console|windows|native|posix如果这个选项参数的值为windows,则表示该应用程序运行时不需要控制台,有

关连接器参数选项的详细说明请参考

msdn

库。

以下四种组合,可以实现console和windows模式的混合,可以达到不d出dos窗口的效果,也可以达到在windows程序中向控制台输出printf信息了。

#pragma

comment(

linker,

"/subsystem:windows

/entry:winmaincrtstartup"

)

#pragma

comment(

linker,

"/subsystem:windows

/entry:maincrtstartup"

)

#pragma

comment(

linker,

"/subsystem:console

/entry:maincrtstartup"

)

#pragma

comment(

linker,

"/subsystem:console

/entry:winmaincrtstartup"

)

int

apientry

winmain(hinstance

hinstance,

hinstance

hprevinstance,


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8130482.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-13
下一篇 2023-04-13

发表评论

登录后才能评论

评论列表(0条)

保存