我正在考慮在C++/CLI中移植一個應用程序C/C++。用.NET連接C/C++
主要我想利用反射,XML序列化的可能性以及Microsoft提供的.NET框架中的所有功能(甚至可能是單聲道)。
有問題的項目沒有大量使用STL,應用程序對象大多是靜態分配的。很多代碼是用C編寫的,另一個是用C++實現的。
問題是代碼非常非常非常「長」:這是現有代碼轉換所需時間的問題,因此它可以正常運行。
我試圖創建一個在/ clr中使用flag編譯的C++項目,畢竟沒那麼糟糕。您可以保留現有代碼C++,但同時使用「managed」類,甚至可以從C++類方法訪問「受管理」對象。
,我發現很少,但讓我疑惑這個「移民」這個漏洞......
要充分利用使用反射數據序列化的,我所有的數據結構應加以管理。非託管類不能聲明由某種類型的託管類定義的字段。爲了解決這個問題,如果一個類被轉換,以便它被垃圾收集器管理,那麼每個聲明該類型成員的類都將被管理。
在引入托管類時可能遇到什麼困難?
嗯,我在想:
- 字符串管理(我討厭打電話AllocaHGlobal轉換System.String到字符 *每次我需要它(例如,作爲函數參數)
- 陣列管理古典陣列(轉換爲cli來::陣列)
- (已經提到過)混合管理和非管理類
- 異常處理
- 崩潰(核心)創建轉儲如何影響
- ...任何其他,我都沒有想過尚未...
很高興知道,但marshall_as包含從VS 2008開始。嘆息。 – Luca 2011-01-13 22:06:02