可以在C#中創建一個GUI,但在C或C++中創建實際的程序。C#GUI前端
就像說我想做一個聊天應用程序。我希望接口在C#中。但是我想讓所有的實際代碼都在C中。 這可能嗎?
我發現http://www.google.com/search?hl=en&q=P%2FInvoke&btnG=Google+Search&aq=f&oq=
沒有任何人有任何更好的類型的信息?
可以在C#中創建一個GUI,但在C或C++中創建實際的程序。C#GUI前端
就像說我想做一個聊天應用程序。我希望接口在C#中。但是我想讓所有的實際代碼都在C中。 這可能嗎?
我發現http://www.google.com/search?hl=en&q=P%2FInvoke&btnG=Google+Search&aq=f&oq=
沒有任何人有任何更好的類型的信息?
絕對! C#winform可以調用被管理或未被成像的C或C++ dll。有關更多信息,請參閱P/Invoke。
編輯:原來在首頁的P/Invoke上有一條很好的線索。 :)
增加JP的完全正確的以前的答案,你也可以通過COM接口暴露你的C++代碼,然後通過COM/Interop在C#中使用它們。祝你好運,但。
您可以在C中執行的所有操作都可以在託管代碼中完成。你爲什麼要在C#中創建一個組件,而在C中創建另一個組件?你擔心套接字嗎?
但是對於你的問題,你絕對可以像JP上面提到的那樣做。
我同意,除非它是禁止性的,否則它在C#中的一半程序和在C中的一半程序是不合理的。 – 2009-04-10 02:53:50
這不僅是可能的,它很可能是你應該做的。沒有理由重寫.NET的所有現有代碼。
簡而言之,有三種方法可以使用C#中現有的(C/C++)代碼:爲了便於訪問幾個簡單的API,P/Invoke運行良好。 C++/CLI將爲您提供最大的靈活性。你的第三個選擇是使用COM。
根據您希望如何分配應用程序,您應該考慮部署要求。如果您擁有C++模塊,除了.Net框架之外,您將對C++運行時庫有依賴性。如果僅僅是P /調用Win32 API,這是一個非問題。 這對你來說可能並不重要,但對我來說很重要 - 我在應用程序中刪除了C++層,並直接調用Win32。
你已經在這裏給你一些答案肯定。
一個建議tho:過早優化是所有邪惡(或類似的東西)的根源。
除非你正在創建一個科學項目(做一些事情只是爲了看看它是否可以完成),只需在C#中寫下整個事情。 完成後,如果您發現項目的某些部分性能不夠好,請重新編寫這些部分。
基本上,應用程序中很慢的部分很少會出現在你將要做的事情上。
+1鏈接到我的問題的答案。 – Kredns 2009-04-10 02:30:04
...哦,還有一些很好的信息! – Kredns 2009-04-10 02:33:20