2017-04-10 60 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