2010-01-21 26 views
1

我有一個MFC應用程序在移動設備上運行。現在這個應用代碼需要從C#中重用。 我想創建包裝,dll,並從c#導入此dll。包裝MFC應用程序(目標移動設備)創建dll在c#.NET中用於互操作

面臨的問題是,我的項目不是一個類庫。所以我在同一個解決方案中創建了另一個MFC類庫(MFC共享dll),並試圖在這個庫中創建包裝函數。但是,即使添加了引用,我也無法創建任何對象或從該庫訪問我的應用程序的任何功能。

有什麼辦法從這個庫中訪問我的應用程序代碼。

請幫

回答

1

我建議拆分在C#中一些代碼到一個C++ DLL(不是類庫),然後使用的DllImport屬性來訪問這些功能(參見http://msdn.microsoft.com/en-us/library/26thfadc.aspx)。然後,您仍然可以通過添加項目依賴項(將兩個項目都添加到同一解決方案中)在MFC應用程序中使用該DLL。這樣一個lib包裝器就會自動創建並鏈接到MFC應用程序。

一個不同的解決方案(但可能更多的工作)是通過打開命名管道或TCP套接字在MFC應用程序和C#客戶端之間進行進程間通信。作爲協議,您可以創建自己的(如我們在公司所做的那樣),也可以使用XML-RPC,SOAP等。例如,您可以嘗試讓gSOAP在您的MFC服務器中工作,然後定義一個WSDL文件並通過Visual Studio自動生成C#客戶端代碼。

另一種解決方案是將MFC應用程序的一部分轉換爲COM DLL。然後MFC和C#客戶端都可以使用它。但我不認爲這個解決方案比'正常'的DLL解決方案增加了更多的東西。

對不起,但我不知道一個簡單的解決方案(或至少有一個不需要一個微不足道的工作量)。

+0

感謝您的建議。我一定會嘗試一下。 但這種方法的問題是,我可能不得不重構我當前的應用程序,將其拆分爲dll並使用MFC並從c#調用。 是否有任何可能性對我的當前應用程序進行微小更改並創建一個dll充當包裝器(調用我的應用程序代碼)從c#調用,可以解決我的問題? – 2010-01-22 04:25:17

相關問題