VC++调用C#生成DLL的两种方法

VC++调用C#生成DLL的两种方法

ID:40755599

大小:18.30 KB

页数:6页

时间:2019-08-07

VC++调用C#生成DLL的两种方法_第1页
VC++调用C#生成DLL的两种方法_第2页
VC++调用C#生成DLL的两种方法_第3页
VC++调用C#生成DLL的两种方法_第4页
VC++调用C#生成DLL的两种方法_第5页
资源描述:

《VC++调用C#生成DLL的两种方法》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、VisualC、delphi或者vb等编程语言来编写的DLL文件,在编译完成以后,产生DLL文件[wenjian]已经是一个可以直接供计算机使用的二进制文件,而Visual c#生成的DLL不是独立运行的程序,是某个程序的一个部分,只能由所属的程序调用,用户不能也不需要打开它,VisualC#编译器生成的托管代码虽然也是二进制文件,但不是可以直接供计算机使用的原始代码,实际上是一种中间语言(IL)代码,需要经过"下一代窗口服务"(NextGenerationWindowsServices,简写为NGWS)runtime的即时编译器(即JIT)进行编译。用VisualC#生成的DLL文件已经和

2、以前的DLL文件有了本质上的区别。用VisualC#生成的DLL文件在程序设计中更多的表现为一种类(Class)或者类库(ClassLibrary)。       如果想在vc++的非托管代码中调用已经用VC#生成的托管的DLL,从两个方向进行调整可以产生两种办法:(visualstudio2008)(下面方法都是对于同一平台下,即C#跟VC++都是在windows平台下)一、对VC++的环境中进行修改使其支持托管代码:     vc++调用端增加公共语言运行时【clr】的支持以执行C#的程序:【解决方案】 ->【 Properties】(右键)-> 【ConfigurationProper

3、ties】(展开左树)-> 【General】(打开子节点)-> 【CommonLanguageRuntimesupport】(选中选项)->【CommonLanguageRuntimesupport(/clr)】(选中) OK,现在就可以引入托管的动态连接库来用了,不过在调用时还是得注意语法(new->gcnew,....),例如下: #include"stdafx.h" #using"SmartDeviceDLL.dll" usingnamespaceSmartDeviceDLL; int_tmain(intargc,_TCHAR*argv[]) { printf("1111111111

4、111");  SmartDeviceDLL::ICalculator^pICalc=gcnewSmartDeviceDLL::Class1();   longlResult=0; lResult=pICalc->Add(5,10); wprintf(L"theresultis%d",lResult);   printf("222222222222222222");  charc; scanf("%c",&c); return0; }二、C#生成DLL端编译成COM接口,供VC++以托管格式调用(命令的运行都是在visualstudiocommandprompt(命令窗口)中)1

5、.新建一个C#的动态连接库(在模板,下单击类库): usingSystem; usingSystem.Linq; usingSystem.Collections.Generic; usingSystem.Text; namespaceSmartDeviceDLL {    publicinterfaceICalculator    {        intAdd(intNumber1,intNumber2);    }     publicclassClass1:ICalculator    {        publicintAdd(intNumber1,intNumber2)      

6、  {            returnNumber1*Number2;        }        publicstaticintTestMethod(Strings)        {            Console.WriteLine("Managedassembly:[0]",s);            returns.Length;        }    } }2.为程序集创建一个强命名的类库,并在AssemblyInfo.cs文件中用AssemblyKeyFile属性指向它:   1)、使用强命名工具(StrongNameUtility)产生密钥对:      s

7、n-kMyKeyFile.snk   2)、在AssemblyInfo.cs文件中用AssemblyKeyFile属性指向它:     即在项目的文件AssemblyInfo.cs中将[assembly:ComVisible(false)]用以下内容替换:        [assembly:ComVisible(true)]         [assembly:AssemblyDelaySign(false)

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

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

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