用于调用 Web 服务的 C# class 的 C++ 包装器 class
C++ wrapper class for C# class calling a web service
所以,我用 c# 编写了一个 Web 服务,它有一个对哈希进行签名的方法。此 Web 服务是一个 WCF 服务应用程序。
然后,我创建了一个 c# 控制台应用程序,我在其中编写了一个函数来使用此 Web 服务。
调用web服务的函数声明为:
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;
}
}
此网络服务工作正常。现在我想在这个 c# 方法上构建一个 c++ 包装器 class,因为我想从非托管代码调用这个 web 服务,我认为创建一个 c++ 包装器 class 是个好主意。任何人都可以帮助我提供这种包装器 class 的一种结构吗?我对c++和c#之间的转换不是很了解。我已经创建了一个 C++ CLR class 库,其中有一个 ref class,它将包含我的 c++ 方法来调用这个 c# 方法,但我仍然对该函数的参数类型有一些问题。
如果您想坚持使用本机(非托管)C++(而不是使用 C++/CLI),您最好的选择可能是 WWSAPI,因为它可以直接从 C++ 调用 WCF 服务。尽管因为它是基于 C 的 API,所以从 C++ 使用它有点麻烦。
否则,有大量关于 C++/CLI 的文档here; in particular marshaling。
所以,我用 c# 编写了一个 Web 服务,它有一个对哈希进行签名的方法。此 Web 服务是一个 WCF 服务应用程序。 然后,我创建了一个 c# 控制台应用程序,我在其中编写了一个函数来使用此 Web 服务。 调用web服务的函数声明为:
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;
}
}
此网络服务工作正常。现在我想在这个 c# 方法上构建一个 c++ 包装器 class,因为我想从非托管代码调用这个 web 服务,我认为创建一个 c++ 包装器 class 是个好主意。任何人都可以帮助我提供这种包装器 class 的一种结构吗?我对c++和c#之间的转换不是很了解。我已经创建了一个 C++ CLR class 库,其中有一个 ref class,它将包含我的 c++ 方法来调用这个 c# 方法,但我仍然对该函数的参数类型有一些问题。
如果您想坚持使用本机(非托管)C++(而不是使用 C++/CLI),您最好的选择可能是 WWSAPI,因为它可以直接从 C++ 调用 WCF 服务。尽管因为它是基于 C 的 API,所以从 C++ 使用它有点麻烦。
否则,有大量关于 C++/CLI 的文档here; in particular marshaling。