C++和C#编写并且相互调用COM组件.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C和C#编写并且相互调用COM组件

C++和C#编写并且相互调用COM组件 前一阵在工作中做项目的时候,遇到了COM组件的调用和使用问题,当时研究和好一阵,才把中间的环节打通,现在写出来为大家提供方便,这里包含了四个类型: 1、在VS2005中,C#编写DLL并使用C++调用 2、在VS2005中C#编写的COM组件,使用VC6.0调用 3、在VC6.0中编写COM组件,使用VS2005 C#调用 4、在VC6.0中编写COM组件,使用VC6.0调用 其中每个类型都写了两个程序,一个为COM组件程序,一个为调用程序 程序实现: 1、在VS2005中,C#编写DLL并使用C++调用 (1)C#编写DLL程序 建立C#编写的DLL程序AddDll,项目类型为:类库 程序代码: using System; using System.Collections.Generic; using System.Text; namespace AddDll { ??? public class Add ??? { ??????? public int iadd(int a, int b) ??????? { ??????????? int c = a + b; ??????????? return c; ??????? } ??? } } ????? (2)C++编写调用程序 建立C++的Win32控制台应用程序UseDll,项目类型为:Win32控制台应用程序 配置:右键点击解决方案资源管理器中的UseDll,选择“属性”,将公共语言运行库支持设置为“公共语言运行库支持(/clr)” 程序代码: #include stdafx.h #include stdio.h #using ..\debug\AddDll.dll using namespace AddDll; int _tmain(int argc, _TCHAR* argv[]) { ??????? int result; ??????? Add ^add = gcnew Add(); ??????? result = add-iadd(10,90); ??????? printf(%d,result); ??????? scanf(%s); ??????? return 0; } ????? 2、在VS2005中C#编写的COM组件,使用VC6.0调用 (1)VS2005中使用C#编写COM组件 建立C#编写的COM组件,项目类型为类库 配置:右键点击解决方案资源管理器中的AddCom,选择“属性”,选择“生成”,选择“为COM Interop注册(_P)” 打开AssemblyInfo.cs文件,设置[assembly: ComVisible(true)] 这用就可以生成AddCom.tlb文件 程序代码: using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServices; namespace AddCom { ??? //可以通过//菜单的 “工具/guid生成”。 ??? //注意要选择Define Guid{….}格式,并全//部保存下来,保存到哪都行,记事本呀什么的。 ??? //因为在做VC程序/////////的时候要用到的。 ??? [Guid(298D881C-E2A3-4638-B872-73EADE25511C)]? ??? public interface AddComInterface ??? { ??????? [DispId(1)] ??????? int iadd(int a, int b); ??????? [DispId(2)] ??????? float ladd(float a, float b); ??? } ??? [Guid(2C5B7580-4038-4d90-BABD-8B83FCE5A467)] ??? [ClassInterface(ClassInterfaceType.None)] ??? public class AddComService : AddComInterface ??? { ??????? public AddComService() ??????? { ??????? } ??????? public int iadd(int a, int b) ??????? { ??????????? int c = 0; ??????????? c = a + b; ??????????? return c; ??????? } ??????? public float ladd(float a, float b)

文档评论(0)

caohua0308 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档