C# .NET CLR内部调用

C# .NET CLR内部调用,c#,.net,clr,C#,.net,Clr,是否有方法托管.NET CLR运行时并注册MethodImplOptions.InternalCall函数?(这不是一个关于P/Invoke的话题)是你最好的选择,但不能保证这一点。这似乎是C++/CLI的一项特定任务。SSCLI代码(特别是clr\src\vm\ecall.cpp)表明,没有办法注册内部调用方法,因为关键的gECClasses表是硬编码的。这里的“偏离标记”到底是什么?如果无法使用COM api使InternalCall工作,那么P/Invoke不是一个选项,那么C++/CLI

是否有方法托管.NET CLR运行时并注册MethodImplOptions.InternalCall函数?(这不是一个关于P/Invoke的话题)

是你最好的选择,但不能保证这一点。这似乎是C++/CLI的一项特定任务。

SSCLI代码(特别是clr\src\vm\ecall.cpp)表明,没有办法注册
内部调用
方法,因为关键的
gECClasses
表是硬编码的。

这里的“偏离标记”到底是什么?如果无法使用COM api使InternalCall工作,那么P/Invoke不是一个选项,那么C++/CLI是最好(唯一?)的托管方式->非托管方式。InternalCall低于CLI级别,因此C++/CLI。jameszhao的问题非常明确,他想要什么。实际的API与共享源代码版本不同吗?确实不同,但如何不同?。。我只能建议一方面用IDS-和公共符号来启动,另一方面,SSCLI代码跳入 McScWKS。DLL。我看到很多人在论坛上问这个问题——他们要么想在C++ DLL中调用一些东西,认为这可能是做这件事的方法,或者他们从来没有说他们想做什么。不管怎样,答案都是“不”。出于兴趣,您为什么要这样做?FWIW,我已经在汇编程序级别调试了mscorwks.dll,以修复.NET加载程序的问题,并调查
tail的行为。调用
,可以确认在这两种情况下SSCLI与实际机器代码之间存在精确的对应关系。据我所见,大部分SSCLI在CLR中很常见,只有像GC和codegen这样敏感的东西明显不同,而其他东西则被忽略了。@Earwicker。我需要避免P/invoke的封送处理成本。在这种情况下,我可能会使用C++/CLI。另外,我想知道是否可以在VM中创建一些附加的MSIL功能。