C#调用C函数(DLL)传递参数问题

转载 2016年05月31日 20:51:59

备忘:

1.C函数参数为字符串char*。如果是入参,对应C#中string或StringBuilder;如果是出参对应C#中StringBuider;

 

2.C函数参数为结构体指针,需在C#中对应定义结构体。如果是入参,C#中可为myfunction(MyStruct mystruct)或myfunction(ref MyStruct mystruct);如果是出参,C#中为myfunction(ref MyStruct mystruct)。有多个函数使用MyStruct参数时,如果有一个函数使用ref,则其它函数也要使用ref,无论其是否是出参,否则会在运行时提示出现内存错误。即要尽量保证同一结构体类型的参数在C#中定义的一致性。

 

3.C函数不能返回数组,但可将数组封装为结构体的成员,通过返回结构体结果,从而得到要返回的数组。

 

 其它参考文章:

平台调用P-INVOKE(一)--(基础篇) 

http://blog.csdn.net/sdl2005lyx/article/details/6796037

平台调用P-INVOKE(二)--(封送字符串) 

http://blog.csdn.net/sdl2005lyx/article/details/6799495

 

平台调用P-INVOKE(三)--(封送结构体) 

http://blog.csdn.net/sdl2005lyx/article/details/6801113

 

平台调用P-INVOKE高级篇(一)--(封送含有二维数组的结构体) 

http://blog.csdn.net/sdl2005lyx/article/details/6998969


相关文章推荐

C#调用C++编写的DLL函数, 以及各种类型的参数传递

1. 如果函数只有传入参数,比如: C/C++ Code Copy Code To Clipboard //C++中的输出函数 int __declspec(dllexport) te...
  • vito13
  • vito13
  • 2017年03月31日 15:30
  • 299

C#调用C++编写的DLL函数, 以及各种类型的参数传递 (转载)

C#调用C++编写的DLL函数, 以及各种类型的参数传递   1. 如果函数只有传入参数,比如: C/C++ Code Copy Code To Clipboard //C+...

C#调用C++dll 结构体参数传递问题

1、最近做项目遇到,C#调用C++dll里的函数需要传递结构体参数,发现这个并不是简单的在C#里定义相应的结构体就可以的,下面以一个例子来说明解决的办法,C++中的函数和结构体如下: uin...

C# 调用C++DLL(函数参数包含指针)

  • 2015年11月11日 19:20
  • 4.87MB
  • 下载

C#调用VC的DLL的接口函数参数类型转换

handle---------IntPtr   hwnd-----------IntPtr   char *----------string   int * -----------ref ...
  • F7ANTY
  • F7ANTY
  • 2012年02月23日 21:17
  • 563

C# 调用Dll中非托管C++代码,函数参数的类型对照

对于一维数组,C#参数在基本类型前加ref或out,out表示有返回数据。 如调用 c++的f(float[] a), 在c#中,为f(ref a). 对数据结构, c++ struct S...
  • biyusr
  • biyusr
  • 2012年01月31日 09:00
  • 443

C#调用VC的DLL的接口函数参数类型转换一览表

handle---------IntPtr hwnd-----------IntPtr char *----------string int * -----------ref int int ...

C#调用C++dll 中具有高维指针参数的接口函数

C#调用C++dll 中具有高维指针参数的接口函数 首先需要说明的是,这里的指针指向的都是基本类型,或基本类型的指针。 如果接口函数中有一维指针做参数,那么可以在C#中对应的声明中添加关键字ref...

C#调用VC DLL接口函数参数类型转换方法介绍

本文列出了C#调用VC DLL接口函数参数类型转换的方法,供大家参考。AD: handle---------IntPtrhwnd-----------IntPtrchar *----------str...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#调用C函数(DLL)传递参数问题
举报原因:
原因补充:

(最多只允许输入30个字)