N种方法使用C++调用C#.NET库
来源:互联网 发布:java url路径转成pdf 编辑:程序博客网 时间:2024/05/12 10:43
转载自 http://stainboyx.wordpress.com/2010/05/22/n%E7%A7%8D%E6%96%B9%E6%B3%95%E4%BD%BF%E7%94%A8c%E8%B0%83%E7%94%A8c-net%E5%BA%93/
为了减少篇幅,此文不描述何种场景下需要使用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共享内存和服务通讯。
其实利用双进程通讯的方法,可以演变出各种各样调用的思路。聪明的你可以充分发挥想象力,写出自己独有的调用模式。
- N种方法使用C++调用C#.NET库
- N种方法使用C++调用C#.NET库
- N种方法使用C++调用C#.NET库
- C#.net 方法调用 应用程序
- 调用存储过程方法 (asp.net C#)
- js 调用C#.NET后台方法 【收藏】
- C#.NET调用WSDL接口及方法
- java使用jacob调用c#.net程序
- 使用C++.NET调用webservice实战
- C语言 递归方法调用函数计算n!
- 使用C程序调用Java类方法
- Java使用JNI调用C/C++方法
- go 使用lib 调用 c++ 方法(c 调用形式)
- vb.net静态动态调用c++dll的方法
- NET 2.0(C#)调用ffmpeg处理视频的方法
- NET 2.0(C#)调用ffmpeg处理视频的方法
- NET 2.0(C#)调用ffmpeg处理视频的方法
- NET 2.0(C#)调用ffmpeg处理视频的方法
- 网站缓存技术
- 流式套接字编程
- 成大事,赚大钱,靠什么
- PrintStream与PrintWriter的区别
- 帝国网站管理系统Ecms采集使用技巧
- N种方法使用C++调用C#.NET库
- Delphi 读取 c# webservice XML的base64编码图片字符串转化图片并显示
- ABAP -- 删除重复项
- 到哪? 蓝翔。
- 25匹马,5条赛道,一匹马一个赛道,求决胜1,2,3名至少多少场。
- win7 下adb devices找不到设备的解决方法
- leetcode:Generate Parentheses
- Java Static介绍
- Android 资源文件中@、@android:type、@*、?、@+含义和区别