C# COM
f7anty
这个作者很懒,什么都没留下…
展开
-
C#中调用非托管的DLL及参数传递 (一)
微软的.NET框架的优点之一是它提供了独立于语言的开发平台。你可以在VB、C++、C#等语言中编写一些类,而在其它语言中使用(源于.NET中使用了CLS),你甚至可以从另一种语言编写的类中继承。但是你要是想调用以前的非托管DLL,那又会怎么样呢?你必须以某种方式将.NET对象转换为结构体、char *、函数指针等类型。这也就是说,你的参数必须被marshal(注:不知道中文名称该叫什么,英文中转载 2012-02-23 21:56:03 · 2079 阅读 · 0 评论 -
C#如何直接调用非托管代码
C#如何直接调用非托管代码,通常有2种方法: 1. 直接调用从 DLL 导出的函数。2. 调用 COM 对象上的接口方法我主要讨论从dll中导出函数,基本步骤如下:1.使用 C# 关键字 static 和 extern 声明方法。2.将 DllImport 属性附加到该方法。DllImport 属性允许您指定包含该方法的DLL 的名称。3.如果需要,为方法的参数和返回值转载 2012-02-23 21:58:55 · 1348 阅读 · 0 评论 -
C#和C++的主要区别
算是一篇学习笔记吧。记录一下学习中的感受,以便日后查询。1 cs中的所有类都派生于同一个称作System.Object的基类。cpp没有这么一个基类,但vc中有一个祖先类CObject类,与cs不同的是,用户自定义的类可以不从它继承。2 c#中定义一个实例时,如果是数值型,则在栈上创建;如果是引用型,则在堆上创建。cpp中,如果是 myclass m_object;则是在栈上创建;如果是m转载 2012-02-23 21:27:17 · 655 阅读 · 0 评论 -
C#调用VC的DLL的接口函数参数类型转换
handle---------IntPtr hwnd-----------IntPtr char *----------string int * -----------ref int int &-----------ref int void *----------IntPtr unsigned char *-----ref byte Stru转载 2012-02-23 21:17:02 · 868 阅读 · 0 评论 -
COM中的安全数组SAFEARRAY、与在VC++(VARIANT) C#(object)中调用
最近在做WEBGIS项目,要调用以前一些VC的DLL,所以使用COM进行封装,在C#中传数组头痛了几天,今天终于调试出来了。由于COM中不能直接使用数组,所以经常使用到SAFEARRAY与VARIANT的转换SAFEARRAY* pSA; SAFEARRAYBOUND aDim[1]; //定义安全数组维数aDim[0].lLbound=0; aDim[0].cElements转载 2012-03-24 10:51:20 · 4203 阅读 · 0 评论