C#调用C++ 平台调用P/Invoke 结构体--结构体嵌套【八】
来源:互联网 发布:php能做幻灯片吗 编辑:程序博客网 时间:2024/05/01 12:21
普通的结构体嵌套很简单,C#中直接定义成对应的结构体即可,这里介绍的是嵌套的结构体以指针的方式表达
【1】嵌套结构体指针
C++代码:
typedef struct _testStru10Pre{int iVal;}testStru10Pre;typedef struct _testStru10{testStru10Pre *pPre;long lVal;_testStru10(){pPre = NULL;}}testStru10;
EXPORTDLL_API void Struct_NestStruct( testStru10 *pStru ){if (NULL == pStru){return;}pStru->lVal = 10;if (NULL != pStru->pPre){pStru->pPre->iVal = 9;}wprintf(L"Struct_NestStruct \n");}
C#代码:定义为IntPtr需要进行解析:
public struct testStru10Pre{ public int iVal;};public struct testStru10{ public IntPtr pPre; public int lVal;};[DllImport("ExportDll.dll", CharSet = CharSet.Unicode)]public static extern void Struct_NestStruct(ref testStru10 pStru);
测试:
CExportDll.testStru10Pre str10Pre = new CExportDll.testStru10Pre();IntPtr intPtrStru10Pre = Marshal.AllocCoTaskMem(Marshal.SizeOf(str10Pre));Marshal.StructureToPtr(str10Pre, intPtrStru10Pre, false);CExportDll.testStru10 stru10 = new CExportDll.testStru10();stru10.pPre = intPtrStru10Pre;CExportDll.Struct_NestStruct(ref stru10);CExportDll.testStru10Pre str10Pre2 = (CExportDll.testStru10Pre)Marshal.PtrToStructure(stru10.pPre, typeof(CExportDll.testStru10Pre));Marshal.DestroyStructure(intPtrStru10Pre, typeof(CExportDll.testStru10Pre));
0 0
- C#调用C++ 平台调用P/Invoke 结构体--结构体嵌套【八】
- C#调用C++ 平台调用P/Invoke 结构体--内存对齐方式、union封装【七】
- 平台调用P-INVOKE(三)--(封送结构体)
- 平台调用P-INVOKE(三)--(封送结构体)
- 平台调用P-INVOKE(三)--(封送结构体)
- C#调用C++ 平台调用P/Invoke 结构体--输入输出参数、返回值、返出值、结构体数组作为参数【五】
- C#调用C++ 平台调用P/Invoke 结构体--含有内置数据类型的一维、二维数组、字符串指针【六】
- 平台调用P-INVOKE完全掌握, 结构体和结构体指针
- 平台调用P-INVOKE完全掌握, 结构体和结构体指针
- 平台调用P-INVOKE高级篇(一)--(封送含有二维数组的结构体)
- 平台调用P-INVOKE高级篇(一)--(封送含有二维数组的结构体)
- 平台调用P-INVOKE完全掌握, 结构体边界对齐和内存布局
- 平台调用P-INVOKE高级篇(一)--(封送含有二维数组的结构体)
- 平台调用P-INVOKE完全掌握, 结构体边界对齐和内存布局
- 平台调用P-INVOKE完全掌握, 反汇编细解结构体作为返回值
- C# 调用C结构体
- P/Invoke (平台调用)
- P/Invoke平台调用
- 使用pgAdmin将shp导入PostGIS及其典型错误处理
- 什么是ActiveRecord
- 花生壳ping不通深入分析及解决方法
- 《SAS编程与数据挖掘商业案例》学习笔记之三
- Reverse Integer
- C#调用C++ 平台调用P/Invoke 结构体--结构体嵌套【八】
- TCP三次握手/四次挥手
- [转载]cookie 和session 的区别详解 - 施杨
- 《SAS编程与数据挖掘商业案例》学习笔记之四
- vector的排序和去重
- c++单线程内存池
- dede采集过滤规则
- Asp.Net中TextBox获得焦点时,其文本全被选中。
- 面试常见问题