首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Visual Studio中的托管代码

Visual Studio中的托管代码
EN

Stack Overflow用户
提问于 2009-09-15 18:35:37
回答 3查看 1.3K关注 0票数 2

是否可以为c++编码关闭托管代码(并打开非托管代码),以便生成的程序(Exe)可以直接运行到Visual Studio2008中的本机代码?

另外,在第一次运行.net (托管)可执行文件(比如用C#编写)之后,可执行文件会转换为本机代码(就像.net之前的旧c++可执行文件一样),这是真的吗?或者,如果它是用C#编写的,有没有办法让它直接编译成本机代码?

EN

回答 3

Stack Overflow用户

发布于 2009-09-15 18:44:16

这两个问题的答案都是肯定的。

您可以在不需要.Net的VS中创建非托管c++代码项目。您还可以将非托管C++代码链接到托管C++代码,并(某种程度上)两全其美-尽管to系统之间的调用参数匹配很有趣。

您还可以使用ngen .Net实用程序将.Net项目预编译为纯代码。然而,在这样做的过程中,您失去了一些灵活性。编译.Net项目时,即时编译器将考虑本地功能。因此,如果您分发一个由VS生成的.Net项目,那么运行该程序的本地机器上的ngen将进行编译。然而,如果您在您的机器上使用ngen,那么预编译的代码将绑定到您系统的处理器或功能。

根据Joel的评论。不管是否使用ngen,在目标机器上仍然需要.Net框架。

仔细想想,使用ngen预编译.Net项目可能并不比将非托管c++项目编译为本机代码差。

票数 4
EN

Stack Overflow用户

发布于 2009-09-15 18:39:33

要对C#执行您想要的操作,可以使用ngen.exe,它随C#编译器一起提供。在映像上运行该命令,它将作为本机代码添加到GAC中。

票数 1
EN

Stack Overflow用户

发布于 2009-09-15 18:45:43

据我所知,您可以临时切换到非托管代码,即通过封送处理使用非托管变量等。看看这里:http://msdn.microsoft.com/de-de/library/bb384865.aspx

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

https://stackoverflow.com/questions/1428937

复制
相关文章

相似问题

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