预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共11页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实现了C#调用C++Dll文件 Object object类型是在.NETFramework中的Object的别名,在C#的统一类型系统中,所有类型(预定义类型,用户定义类型,引用型和值类型)都是直接或间接从object继承的。可以将任何类型的值赋给object类型的变量。将值类型的变量转换为对象的过程成为“装箱”,将对象类型的变量转为值类型的过程成为“取消装箱” C#中所有的类都直接或者间接继承自System.Object类,这使得C#中的类得以单根继承,如果我们没有明确指定继承类,编译器缺省认为该类继承自System.Object类。System.Object类也可用小写的object关键字表示,两者完全等同。C#中所有的类都继承了System.Object类的公共接口,剖析它们对我们理解并掌握C#中类得行为非常重要。 GetType()和typeof的语义相同,它们都通过查询对象的元数据来确定对象的运行时的类型 构造函数: 作用:这个就不用多说了。 注意点:直接使用newObject()可以用来创建对象,如果非Object类型,则在该类型的构造函数被调用时,该函数自动被调用。 Equals函数; Finalize函数; 作用:允许对象在垃圾回收该对象之前尝试释放资源并执行其他清理操作。 注意点:Finalize是受保护的,因此只能通过此类或派生类访问他。 GetHashCode函数; 作用:用作特定类型的哈希函数。 注意点:适用于哈希算法和诸如哈希表之类的数据结构。 GetType函数; 获取当前实例的确切运行时类型 注意点: ReferenceEquals函数; MemberWiseClone函数; 作用:创建当前Object的浅表副本 ToString函数 作用:返回一个代表当前对象的字符串 注意点:默认情况下返回的是该对象所属类型的全名称。继承类可以重写该方法,以便自定义显示输出内容。 C++程序生成DLL 工程创建 创建项目:Win32->Win32项目,名称:MyDLL 选择DLL(D)->完成. 文件添加 新建源文件testdll.cpp 文件中代码如下 #include<Windows.h> extern"C"_declspec(dllexport)LPTSTRInit(LPTSTRa) { strcat((char*)a,"added"); returna; } extern"C"_declspec(dllexport)intadd(inta[]) { returna[0]+a[1]; } extern"C"_declspec(dllexport)intsubtract(inta,intb) { returna-b; } 共写了三个函数 新建模块定义文件mydll.def mydll.def代码如下: EXPORTS add 最后,编译(Ctrl+Shift+B)生成MyDLL.dll文件或MyDLL.lib文件 通过更改属性来生成.dll或者.lib C#调用DLL文件 如下代码是调用的例子 usingSystem; usingSystem.Collections.Generic; usingSystem.ComponentModel; usingSystem.Data; usingSystem.Drawing; usingSystem.Linq; usingSystem.Text; usingSystem.Windows.Forms; usingSystem.Reflection; usingSystem.Reflection.Emit; usingSystem.Runtime.InteropServices; //?add@@YAHHH@Z namespaceCsharp调Ì¡Â用®?CIPP { publicpartialclassForm1:Form { //[DllImport("Dlll.dll")] //[DllImport("Dlll.dll",EntryPoint="add",ExactSpelling=false,CharSet=CharSet.Auto,CallingConvention=CallingConvention.StdCall)] [DllImport("Dlll.dll",EntryPoint="add",ExactSpelling=false,CallingConvention=CallingConvention.Cdecl)] staticexternintadd(int[]av); //externstaticintadd(inta,intb); publicForm1() { InitializeComponent(); } pub