首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否可能在库程序集中有程序入口点?

是否可能在库程序集中有程序入口点?
EN

Stack Overflow用户
提问于 2022-07-23 16:14:19
回答 1查看 112关注 0票数 1

在编译后的系统语言(如C/C++)中,通常在链接时间解析入口点,这使链接器能够在DLL中拥有main函数,这样链接器就不会抱怨并将入口点地址设置为DLL中的符号(或者导入库中的函数,但不确定)。

我最近开始使用C#,我想做一些类似的事情,在库中有Main方法(最好是根据.NET标准构建),而实际的.NET不定义任何入口点,而是使用库中的入口点。

我知道我可以在exe中编写一个Main方法,并在其中调用库的Main,但重点是要避免这种情况。

我相信Winforms和WPF提供了类似的东西,所以希望我所做的是可能的,否则,请教我为什么.NET没有提供这样的机制。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-25 00:15:41

这里似乎有一种误解:

在.NET中,DLL和EXE之间唯一的区别是头中存在.entrypoint,它标识CLR引导程序调用的启动方法。

如果没有,那么它是一个库,而不是一个应用程序。拥有一个在任何方法上没有.entrypoint的EXE是没有意义的,它不会运行,因为CLR引导程序将不知道如何处理它。

Winforms和WPF不做你声称的事情:它们有一个正常的.entrypoint,只是碰巧是你不需要担心的锅炉板代码。

为了清楚起见:文件的实际扩展名在某种程度上无关紧要。任意调用程序集是完全合法的,您可以将包含.entrypoint的程序集链接到另一个程序集中,无论它是否有.exe扩展或其他任何扩展。

但是,只有当文件具有.exe扩展名时,Windows才会自动引导,因为CLR引导程序本身需要引导。但是,您可以调用AppDomain.ExecuteAssembly,它本质上是在另一个应用程序中执行相同的操作。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73092307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档