首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C#调用C/C++ DLL参数传递(3)

2012-06-24 
C#调用C/C++ DLL参数传递(三)2。 在C#中创建DLL接口的声明C#没有全局函数,必须使用静态函数实现全局函数。1)

C#调用C/C++ DLL参数传递(三)

2。 在C#中创建DLL接口的声明

C#没有全局函数,必须使用静态函数实现全局函数。

1)  DllImport类似C++中的__declspec(dllimport),第一个参数为必选参数,为DLL的路径,一般以相对路径即可,只需要将DLL文件放到工作目录中即可

2) EntryPoint表示对应的函数名称,这个与C++ DLL工程中.def文件中导出的函数名同

使用C#调用C++时不支持C++的函数名重载(至少还没有找到办法),如果参数不同必须使用不同的函数名用以区分,但在C#中可以使用相同的函数名

3) C#中的声明的函数名不一定与实际的函数名一样,比如


需要特别注意的是 CopyPointerArray2D与CopyArray2D虽然两个函数的声明完全一样,但在C++中实际处理的方式是完全不同的,产者是看作一维指针数组来处理的,可以允许“二维数组”是不连续的,而后者是将其看作连续的存储空间,即C/C++中的二维数组的数据存储方式处理的,所以在示例代码中使用CopyArray2D处理byte[][]类型的锯齿数组是不可以的,会造成内存的非法访问破坏内存数据。


还没有研究多维数组的传递,其传递方式会比较复杂,应该不会用到吧,如果确实出现的话是该考虑一下设计问题了。


对于C++ class定义的类型以及如何调用对象的方法一下步再研究。(待续)

热点排行