C和Csharp相互调用dll

C和Csharp相互调用dll

ID:37323051

大小:309.51 KB

页数:11页

时间:2019-05-21

C和Csharp相互调用dll_第1页
C和Csharp相互调用dll_第2页
C和Csharp相互调用dll_第3页
C和Csharp相互调用dll_第4页
C和Csharp相互调用dll_第5页
资源描述:

《C和Csharp相互调用dll》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、一、在VS2005中,C#编写DLL并使用C++调用(1)C#编写DLL程序建立C#编写的DLL程序AddDll,<1>项目类型为:类库程序代码:usingSystem;usingSystem.Collections.Generic;usingSystem.Text;namespaceAddDll{publicclassAdd//类必须为public{publicintiadd(inta,intb)//方法也必须为public{intc=a+b;returnc;}}}(2)C++编写调用程序建立C++的Win32控制台应用程序UseDll,<1>项目类型为:Win32控

2、制台应用程序.<2>配置:右键点击解决方案资源管理器中的UseDll,选择“属性”,将公共语言运行库支持设置为“公共语言运行库支持(/clr)”程序代码:#include"stdafx.h"#include"stdio.h"#using"..debugAddDll.dll"//注意,要让程序找到dll文件usingnamespaceAddDll;int_tmain(intargc,_TCHAR*argv[]){intresult;Add^add=gcnewAdd();//注意此处的托管指针result=add->iadd(10,90);printf("%d",res

3、ult);scanf("%s");return0;如果操作步骤正确的话,就基本上没有什么问题.二、在VS2005中C#编写的COM组件,使用VC6.0或vc2005调用(1)VS2005中使用C#编写COM组件<1>建立C#编写的COM组件,项目类型为类库<2>配置:右键点击解决方案资源管理器中的AddCom,选择“属性”,选择“生成”,选择“为COMInterop注册(_P)”<3>打开AssemblyInfo.cs文件,设置[assembly:ComVisible(true)]这样就可以生成AddCom.tlb文件程序代码:usingSystem;usingSyst

4、em.Collections.Generic;usingSystem.Text;usingSystem.Runtime.InteropServices;//如果对C#比较熟悉的读者可能很快就明白,不熟悉的读者可能要多摸索几遍namespaceAddCom{//可以通过//菜单的“工具/guid生成”。//注意要选择DefineGuid{….}格式,并全//部保存下来。//因为在做VC程序/////////的时候要用到的。[Guid("298D881C-E2A3-4638-B872-73EADE25511C")]publicinterfaceAddComInterface

5、{[DispId(1)]//至于此处是什么作用,我也不太明白intiadd(inta,intb);[DispId(2)]stringstradd(stringstrA,stringstrB);}[Guid("2C5B7580-4038-4d90-BABD-8B83FCE5A467")][ClassInterface(ClassInterfaceType.None)]publicclassAddComService:AddComInterface{publicAddComService(){}publicintiadd(inta,intb){intc=0;c=a+b;re

6、turnc;}publicstringstradd(stringstrA,stringstrB){returnstrA+strB;}}}(2)VC6.0编写调用程序<1>使用VC6.0编写建立MFC应用程序UseCom,项目类型为MFCAppWizard(exe)<2>在stdafx.h添加:#import"AddCom.tlb"usingnamespaceAddCom;程序代码:voidCUseComDlg::OnButtonUse(){//TODO:Addyourcontrolnotificationhandlercodehereintdresult;CString

7、strResult;CoInitialize(NULL);//NULL换成0也可以AddCom::AddComInterfacePtrp_Add(__uuidof(AddComService));dresult=p_Add->iadd(1,2);_bstr_tbstr=p_Add->stradd(“hello,”,”world!”);//进入调试即可查看,//这里不再显示了strResult.Format("int:%d",dresult);MessageBox(strResult,"计算结果",MB_OK);CoUninitialize

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。