分享 N种方法使用C++调用C#.NET库

sknice sknice 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
为了减少篇幅,此文不描述何种场景下需要使用C++调用C#/VB等托管代码,而直接给出三种常规方法和一些变通方法以供参考。

常规方法1:COM

使用C#把托管类注册成COM,用regasm.exe注册output assembly,然后用C++像调用COM一样调用assembly里面的type。

优点:编写代码简单,调用方便

缺点:需要注册output,发布不够简单

参考:http://www.codeproject.com/KB/cs/ManagedCOM.aspx

常规方法2:CLR

C#常规编写类,生产assembly,C++使用CLR编译既可直接引用托管类。

优点:编写代码简单,调用方便

缺点:需要了解C++ CLR语法(既不像C++,又不像C#,总之很奇怪)

参考:http://www.codeproject.com/KB/mcpp/cppcliintro01.aspx ,http://msdn.microsoft.com/en-us/library/k8d11d4s.aspx

常规方法3(推荐):API

C#常规编写类,生产assembly,C++使用SDK提供的CLR非托管接口(CLRCreateInstance)进行调用。

优点:传统C#编程,传统C++编程

缺点:暂时还没发现

参考:http://nport.codeplex.com/SourceControl/changeset/view/45681#903468 ,http://msdn.microsoft.com/en-us/library/dd537633.aspx

变通方法:

1. 使用C#/VB包装现有托管类,注册成Windows服务,暴露SOAP web service。VC2005可以使用非托管代码添加引用Web service。

2. 使用C#/VB包装现有托管类,注册成Windows服务。C++利用Windows message和服务通讯。

3. 使用C#/VB包装现有托管类,注册成Windows服务。C++利用Windows共享内存和服务通讯。

其实利用双进程通讯的方法,可以演变出各种各样调用的思路。聪明的你可以充分发挥想象力,写出自己独有的调用模式。
...全文

相关推荐

C++调用C#的DLL实现方法

SwfDotNet是C#编写的,这是个特别好的读写Swf文件的库。本文讲述了在C++项目中,怎么让C++调用C#的DLL动态链接库文件。 具体的实现步骤如下: 一、创建C# DLL,需要指定应用类型为“类库”,代码: namespace CSLib { public class Class1 { private string name; public string Name { get { return name; } set { name = "Your Name:

weixin_38596117

C#调用llama.cpp运行PaddleOCR-VL-1.5实现本地文档理解

文档理解(Document Understanding)是OCR技术从‘识别文字’迈向‘解析语义’的关键演进,其核心在于融合视觉定位与语言推理能力。基于视觉-语言联合理解(VL)原理,PaddleOCR-VL-1.5通过三段式架构(量化ViT编码器+指令微调语言头+跨模态对齐层),在边缘设备上原生输出结构化JSON与检测框坐标,显著提升字段抽取精度与空间可解释性。该技术具备低延迟、离线运行、零云依赖等工业级部署价值,广泛适用于金融票据自动填单、医疗报告关键指标抽取、合同风险条款高亮等强合规、高实时性场景。本

爱不到要偷

C#调用C++ DLL实战:C++/CLI桥接方案详解与避坑指南

在Windows平台软件开发中,托管语言(如C#)与非托管原生代码(如C++)的互操作是常见需求,尤其在需要复用高性能算法库或硬件驱动时。其核心原理是通过特定的“桥梁”技术,在公共语言运行时(CLR)与本地运行时之间进行数据类型转换和内存管理,从而实现跨语言调用。这项技术的核心价值在于能最大化利用现有C++代码资产,避免重写成本,同时为C#应用程序注入原生性能。典型的应用场景包括工业控制、游戏引擎、音视频处理等对计算性能要求较高的领域。本文聚焦于**C++/CLI**这一强大方案,通过构建托管包装器,自然封

dgdfgdfg56546

c# 三种方法调用WebService接口

主要介绍了c# 三种方法调用WebService接口的相关资料,文中示例代码非常详细,帮助大家更好的理解和学习,感兴趣的朋友可以了解下

weixin_38739919

C++调用C#dll代码

C++调用C#dll,采用的VS2010编写的。具体的看代码,比较易懂。

资源共享互相帮助
评论 18
收藏 已收藏
分享
返回顶部
sknice
非技术类 1,663 成员 58,947 内容