2017-04-10 59 views
0

因此,我在c#中編寫了一個Web服務,該服務有一個用於簽名哈希的方法。這個Web服務是一個WCF服務應用程序。 然後,我創建了一個c#控制檯應用程序,我已經編寫了一個函數來使用此Web服務。 它調用Web服務的函數的聲明是:用於調用Web服務的C#類的C++包裝類

class Program 
{ 
public byte[] callWS(string alias, byte[] myHash,string myPassword) 
{ 
    IhashSignSVCClient client = new IhashSignSVCClient(); 
     byte[] signedData= client.SignandReturn(alias, myhash, myPassword); 
     if (signedData != null) 
     { 
      Console.WriteLine(signedData); 
      return signedData; 
     } 
     return null; 

} 
} 

此Web服務工作正常。現在我想通過這個c#方法構建一個C++包裝類,因爲我想從非託管代碼調用這個web服務,我認爲創建一個C++包裝類將是一個好主意。任何人都可以用這種包裝類的結構來幫助我嗎?我還沒有很好地理解C++和c#之間的轉換。我創建了一個C++ CLR類庫,其中包含一個ref類,它將包含我的C++方法來調用此c#方法,但我仍然遇到此函數參數類型的一些問題。

回答

1

如果您想堅持本機(非託管)C++(而不是使用C++/CLI),您最好的選擇可能是WWSAPI,因爲它可以直接從C++調用WCF服務。雖然它是一個基於C的API,但從C++中使用它有點麻煩。

否則,有關於C++/CLI的大量文檔here;特別是marshaling

+0

謝謝。我不想使用Windows Web服務,我曾經使用C++/CLI工作。 – Paul