2010-09-08 80 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