[英]Need advice in converting in one of the legacy C++ component into C#
當前,我們正在開發一個C ++遺留代碼庫,該庫由幾個軟件組件組成。
其中一個組件的編寫方式極難維護。 (例如,內存分配是在X位置完成的,但是內存取消分配是在Y位置完成的。這使內存管理非常痛苦)。 到目前為止,我們已經能夠解決(或解決)所有內存泄漏問題。
但是,經過幾輪錯誤修復之后,我們的感覺是,由於該軟件組件的高昂維護成本,我們離目前的里程碑不太遠。
我知道重寫源代碼可能是不好的: http : //www.joelonsoftware.com/articles/fog0000000069.html
但是,我們認為與其重新構建當前代碼,不如從頭開始重新編寫,因為
因此,我們計划使用托管代碼, 至少使內存管理成為一件輕松的事 。 我們計划選擇C#,因為
我來自C ++和Java背景,對C#一無所知。
謝謝。
我處於類似的情況,我還做了一些混合C ++和C#的實驗。 我的應用程序中的問題是:
另外,您不能直接從本機/非托管C ++調用C#,這意味着我不得不引入一個附加的中間C ++ / CLI(或稱為C ++。Net?)層。
因此,我選擇不遷移到C#,而是繼續使用C ++。
因此,如果要從C ++遷移到C#,請確保:
此外,請記住,如果您不是該項目的唯一開發人員,則所有(或大多數)開發人員都應學習C#。 您不想將所有C#代碼委派給最新的初級開發人員,因為如果他離開,您將(或可能)遇到麻煩。
C#與MFC DLL以及某些DLL函數的接口將如何調用MFC GUI?
一點也不好。 您不能P /調用C ++庫-它僅適用於C導出。 您可能需要編寫一個包裝程序,以便為您從C#進行P / Invoke公開一個C庫接口,或者您需要使用C ++ / CLI重新編譯MFC。 盡管Winforms是與MFC的.NET代碼類似的庫,但沒有理由這樣做。
我需要注意什么嗎?
我不明白那個問題。
如果使用托管C ++,與舊版C ++ DLL的接口會更容易嗎?
考慮到您無法使用C#做到這一點,是的。 您必須重新編譯這些C ++ DLL才能使其具有C接口,或者您必須使用C ++ / CLI從源代碼進行重新編譯。
注意:無論您在此處做什么,都仍然需要擔心本機代碼中發生的任何事情的內存管理和對象生存期。 CLI不會自動為您管理本機資源。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.