我很難理解託管C++如何工作和編譯。瞭解託管C++
在.NET Framework中,您可以使用C#/ VB/F#/ ..等開發代碼。並且所有這些語言都將被編譯爲與Java字節碼相似的通用中間語言(CIL)。從理論上講,CIL可以安裝在任何平臺上(Mono使其具有實用性)。在Windows上,CLR將CIL編譯爲本地代碼Just-In-Time(JIT),並且一切運行順利並且順利。
現在,Managed C++如何編譯?它是否編譯爲CIL代碼並等待CLR使用JIT運行它?我認爲不是,因爲Managed C++可以使用標準C++代碼(不會編譯爲CIL)。此外,它如何能夠使用.NET程序集(即CIL)?
我將不勝感激任何幫助。 感謝
編輯:
我已經看到了這answer。它指出,在C++/CLI中,託管代碼被編譯爲MSIL,並且您可以選擇將非託管代碼編譯爲本機代碼或MSIL。因此,我現在明白如何調用.NET程序集。
無論如何,如果非託管代碼被編譯爲本機代碼,我仍然不明白C++非託管代碼如何在同一程序集中的託管代碼上運行。有任何想法嗎?
很棒的回答。特別是:「CIL並沒有比較好,比如Java JVM中使用的字節碼,它更強大,可以支持任何C++ 03兼容的本機C++代碼。」當我得到一份Java工作時,我看着他們的字節碼規範並且哭了! – hoodaticus