C#调用C++ DLL(结构体中二维数组转换)

.NET技术 > C# [问题点数:300分,结帖人peterb]
等级
本版专家分:12441
结帖率 100%
等级
本版专家分:172977
勋章
Blank
微软MVP 2016年4月荣获微软MVP称号
2015年4月荣获微软MVP称号
2014年4月 荣获微软MVP称号
2013年4月 荣获微软MVP称号
2012年4月 荣获微软MVP称号
2011年4月 荣获微软MVP称号
Blank
红花 2010年9月 挨踢职涯大版内专家分月排行榜第一
Blank
黄花 2010年12月 .NET技术大版内专家分月排行榜第二
2010年10月 挨踢职涯大版内专家分月排行榜第二
2010年8月 挨踢职涯大版内专家分月排行榜第二
Blank
蓝花 2011年7月 .NET技术大版内专家分月排行榜第三
2010年11月 .NET技术大版内专家分月排行榜第三
等级
本版专家分:23322
等级
本版专家分:668
等级
本版专家分:73527
勋章
Blank
银牌 2011年6月 总版技术专家分月排行榜第二
Blank
微软MVP 2014年1月 荣获微软MVP称号
2012年1月 荣获微软MVP称号
Blank
红花 2010年11月 挨踢职涯大版内专家分月排行榜第一
2010年10月 挨踢职涯大版内专家分月排行榜第一
Blank
黄花 2011年6月 .NET技术大版内专家分月排行榜第二
等级
本版专家分:89
等级
本版专家分:1300
等级
本版专家分:542
等级
本版专家分:12441
等级
本版专家分:0
等级
本版专家分:0
peterb

等级:

C#调用C++DLL传递结构体数组的终极解决方案

在项目开发时,要调用C++封装的DLL,普通的类型C#上一般都对应,只要用DllImport传入从DLL中引入函数就可以了。但是当传递的是结构体结构体数组或者结构体指针的时候,就会发现C#上没有类型可以对应。这时怎么办,...

C#接收C/C++DLL结构体嵌套数组及多维数组的解决方案

可以先参看该文章C#调用C++DLL传递结构体数组的终极解决方案 对于结构体嵌套,我们可以按照同样的方式进行来定义结构体,从而形成嵌套,不较不好处理的是结构体数组,这里需要用到MarshalAs一个比较特别的属性...

C#C++ DLL中传递结构体,包含二维数组,一维数组,VS2013下测试通过。

C#C++ DLL中传递结构体,包含二维数组,一维数组

C++ dll 结构体中二维数组 转为C#

C/C++ code #define MAX_STRM_LAYER 3 // 最多几级流媒体//服务器信息typedef struct tagServerInfo{ long uID; char csStrMIP[MAX_STRM_LAYER][16]; // 这个不知道如何转换 unsigned short nStrMPort[MAX_STRM_...

C#调用c++ dll 封送结构体数组,无法成功

c#调用: qf[] qfw = new qf[2]; for (int i = 0; i ; i++) { qfw[i] = new qf(t, t, (float)0.5, 1); } IntPtr[] ptrarr = new IntPtr[1]; ptrarr[0] = Marshal.AllocHGlobal(Marshal.SizeOf(typeof(qf)) ...

C#调用c++dll结构体数组作为引用参数的传递方式

1.C#代码: (1)  LEAK_RECT[] leak_rects = new LEAK_RECT[20];  int leak_num=0;  //画框最好还是漏水用红框,裂缝用绿框,与我生成的文件保持一致  byte bDetect = Leak_Crack_Detect(m_FileName

C#引用c++DLL结构体数组注意事项(数据发送与接收时)

需要在C# 中调用C++ 写的DLL,因为C# 默认的编码方式是Unicode,而调用的DLL规定只处理UTF8编码格式的字符串,DLL中的输入参数类型char*被我Marshal成byte[],输出参数类型char**被我Marshal成了string(C++和C#之间的...

关于c#调用c++dll中结构体相关问题

c#:[DllImport("footDLL.dll", CharSet ...为什么dll中结构体s是x数组从一维数组编程二维数组后,c#调用dll函数出现“System.StackOverflowException”类型的未经处理的异常在 Route.exe 发生 这种BUG,怎么解决?

C#C++之间dll二维(多维)数组传递

思维:用结构体作为中间变量,也就是传递结构体,然后在C#中结构体中的数据放进二维数组中C#接收代码的形式:(这里只是思路展示,非可运行代码) [DllImport("myDLL.dll", CallingConvention = ...

C#调用C++ 平台调用P/Invoke 结构体--含有内置数据类型的一维、二维数组、字符串指针【六】

【1】结构体中含有内置数据类型的一维数组 C++代码: typedef struct _testStru3 { int iValArrp[30]; WCHAR szChArr[30]; }testStru3; EXPORTDLL_API void Struct_ChangeArr( testStru3 *pStru ) { if ...

C# 调用C/C++动态链接库,结构体中的char*类型

C#掉用C++dll直接import就可以之前有不同的类型对应,当要传递结构体的时候就有点麻烦了,这里有一个结构体里边有char*类型,这个类型在C#中调用没法声明,传string是不行的默认string是对应const char*,传...

C#调用结构体指针的C Dll的方法

C#中调用C(C++)类的DLL的时候

C#调用C++DLL二级指针处理方式

我的项目实际遇到的是char**的级指针,C#怎么调用呢?首先,在C++中char*和c#中的string类型是等价的。char**级指针,就是个位数组,等价于C#string类型的一维数组。经过一番思考,我用IntPtr接收C++的char*...

C#调用C++dll关于复杂结构的参数传递

最近在用C#调用C++dll的时候遇到一个问题,看到这结构体,我就去找他的定义,果然足够坑人,char类型的二维数组,参考了很多资料, http://blog.csdn.net/xxdddail/article/details/49703789 ...

C#引用c++DLL结构体数组注意事项

需要在C# 中调用C++ 写的DLL,因为C# 默认的编码方式是Unicode,而调用的DLL规定只处理UTF8编码格式的字符串,DLL中的输入参数类型char*被我Marshal成byte[],输出参数类型char**被我Marshal成了string(C++和C#之间的...

C#中调用C++dll的参数为指针类型的导出函数(包括级指针的情况)

一:首先什么是IntPtr 先来看看MSDN上说的:用于表示指针或句柄的平台特定类型。这个其实说出了这样两个事实,IntPtr 可以用来表示指针或句柄、它是一个平台特定类型。对于它的解释,这个哥们写的比较好:It's a ...

结构体数组作为传出参数从C++封送到C#

由于工作需求,要把C++动态库里面的结构体数组通过参数传出来。网上也查了很多资料,在这里推荐一本书,《精通.NET互操作:P/Invoke、C++ Interop和COM Interop》,介绍Windows平台上的托管代码与非托管代码之间进行...

C#调用C++动态链接库dll

C#调用C++动态链接库dll 由于公司很多底层的SDK,都是C++开发,上层的应用软件却是C# Winform程序。在实际工作的过程,就经常碰到了C# 程序调用C++ 动态库的问题。最近一直在和C++ 打交道,C# 怎么调用C++ 类库...

/C/C++ DLL在其它语言调用 结构体/数组 指针

结构体/数组作为返回值   1. Called in C#   c++ codes: typedef struct TRANSACTION { char account[19]; int maxNum; char startDate[16]; char endDate[16]; } TRANSACTION; typedef ...

C#中调用一个采用C++封装好的dll, 其结构体中二维转换

但其结构体中二维数组不知道应当如何转换, 网上搜索了一把P/Invoke资料相对来说比较少, 没有找到切实有用的文章, 现在调用虽不会报错了, 但没有产生预期效果. C/C++ code   #define MAX_STRM_...

C#调用C++DLL库常见问题

1、数据类型转换  C++ C# 1)BOOL bool 2)char* string   2、函数调用导致堆栈不对称,原因可能是托管的 PInvoke 签名与非托管

C#调用C/C++ 动态链接库DLL(三)

2。 在C#创建DLL接口的声明 C#没有全局函数,必须使用静态函数实现全局函数。 1) DllImport类似C++的__declspec(dllimport),第一个参数为必选参数,为DLL的路径,一般以相对路径即可,只...使用C#调用C++时不支

C#调用C写的DLL二级指针传递方法

最近在做一项目需要调用第3方DLL(c写的),其中有个参数是2级指针,查了很多资料终于搞定 1、函数原形  方法原式: int Quest_goodsA(CHAR* flowno ,CHAR* salesman,int offlinenum,CHAR* offlinegoods,int ...

C#中调用非托管的DLL及参数传递

你可以在VB、C++C#等语言编写一些类,而在其它语言使用(源于.NET使用了CLS),你甚至可以从另一种语言编写的类继承。但是你要是想调用以前的非托管DLL,那又会怎么样呢?你必须以某种方式将.NET对象转换...

C#调用C的Dll(类型对照)

转: C#调用C的Dll(类型对照) //C++中DLL函数原型为  //extern "C" __declspec(dllexport) bool 方法名一(const char* 变量名1, unsigned char* 变量名2)  //extern "C" __declspec(dllexport) bool 方法名...

相关热词 c# 两个form赋值 c#无符号整形转为有符号 a4纸大小 c# c# 图片合并 c# 脏字过滤 c#登录权限 c#设置excel列宽 c#透明度 c# 载入文件 adb c#