通过 C++ 调用 C# 服务

Posted

技术标签:

【中文标题】通过 C++ 调用 C# 服务【英文标题】:Call a C# service through C++ 【发布时间】:2012-10-08 10:40:50 【问题描述】:

我想通过 Visual Studio 2010 中的 Visual C++ 或 C++ 调用用 C# 编写的 Web 服务。我在 Web 上进行了搜索,但找不到任何点对点文档。如果你能告诉我,那将是一个很大的帮助。

【问题讨论】:

【参考方案1】:

如果您准备使用托管 C++,那么您可以使用 WCF。

但是,如果这不是一个选项,那么您最好的选择是使用套接字方法。您将需要一些跨语言的方式来表示您从 C++ 发送到 C# 并再次返回的数据。 Google Protobuf 在这里会有所帮助,因为除了许多其他语言之外,还有两种语言的框架。

【讨论】:

我正在使用 WCF,但我无法通过 C++ 向我的服务发送 HTTP“POST”请求。【参考方案2】:

Web 服务使用 JSON 或 XML 作为接口,并且本质上与语言无关。您必须寻找可以创建对 Web 服务的请求的库。例如,如果您在 C# 中的 Web 服务使用 SOAP (XML),如果您在 Visual Studio 中创建默认 Web 服务,您可以根据 SOAP 的规范在 XML 中创建您自己的请求:

http://www.w3.org/TR/2000/NOTE-SOAP-20000508/

或使用此问题中提到的库之一:

Generic WebService (SOAP) client library for C++

【讨论】:

【参考方案3】:

看看Walkthrough: Accessing an XML Web Service Using C++。

【讨论】:

以上是关于通过 C++ 调用 C# 服务的主要内容,如果未能解决你的问题,请参考以下文章

是否有可能知道哪个 .dll 称为 C# 服务?即使调用首先通过 COM 层?

如何从 c# web 服务调用 c++ Opencv 项目?

通过非默认 AppDomain 中的 C# 函数调用编组 C++ 指针接口

通过 Marshal.GetFunctionPointerForDelegate 从本机 (C++) 线程调用托管函数 (C#)

如何通过 C# 从 C++ dll 调用 struct 中的函数

C#通过PInvoke调用c++函数的备忘录