2010-09-08 44 views

回答

3

是的,这不应该是一个问题。有很少的本地C++构造不能被翻译成IL。可口可乐曾经是一个问题,但已经解决了,我只知道__fastcall是不可翻译的。不会是一个问题,Boost不会使用它。我知道的唯一的其他问题是有很多全局变量。他们需要嵌入到CLR类中,并且类不能超过65535个字段。 CLR加载程序尝试加载程序集时会发生异常。你需要一些漂亮的,特殊的代码才能接近这个限制。

第二个考虑因素是它是否真的有意义。首先使用本机代码的目的是利用代码优化器可以优化它的时间。您通过将代码转换为IL来抛弃它,JIT优化器没有相同的奢侈品。

利用C++ Interop,它可以从托管值类型转换为本地类型,而无需编写任何胶水代码。即时关闭IL一代。像这样:

#pragma managed(push, off) 
// Native code goes here 
//... 
#pragma managed(pop) 
// Managed code goes here