C#调用C++编写dll,参数传递(结构体嵌套联合体)问题

问题描述

typedefstructrealprm{/*realparameter*/longprm_val;/*valueofvariable*/longdec_val;/*numberofplacesofdecimals*/}REALPRM;typedefstructiodbpsd{shortdatano;/*parameternumber*/shorttype;/*upperbyte:type*//*lowerbyte:axis*/union{charcdata;/*bit/byteparameter*/shortidata;/*wordparameter*/longldata;/*2-wordparameter*/REALPRMrdata;/*realparameter*/charcdatas[MAX_AXIS];/*bit/byteparameterwithaxis*/shortidatas[MAX_AXIS];/*wordparameterwithaxis*/longldatas[MAX_AXIS];/*2-wordparameterwithaxis*/REALPRMrdatas[MAX_AXIS];/*realparameterwithaxis*/}u;}IODBPSD;/*MAX_AXIS:max.controlledaxes*/请问大家,这种结构体中嵌套联合体的方式怎么在C#中进行转换阿?

解决方案

解决方案二:

解决方案三:
“联合”中,各成员共享一段内存空间,一个联合变量的长度等于各成员中最长的长度。并且每次只能赋一种值,赋入新值则冲去旧值。你的联合中,最长的成员是REALPRMrdatas[MAX_AXIS];所以结构体structiodbpsd{shortdatano;/*parameternumber*/shorttype;/*upperbyte:type*/REALPRMrdatas[MAX_AXIS];}根据上面两个字段的值,来读取rdatas

时间: 2024-09-20 00:40:08

C#调用C++编写dll,参数传递(结构体嵌套联合体)问题的相关文章

C#调用C++的dll,结构体里面有this指针,该对应什么数据类型?还是说根本不能够调用

问题描述 在C++结构体Struct中有这样一个定义:{...PVOIDContext;...}在给结构体变量赋值时:Structstruct;...struct.Context=this;...然后将struct作为参数,传递给方法使用.问题是:当使用C#调用这个C++的dll时,这个PVOIDContext,应该对应什么数据类型? 解决方案 解决方案二:P表示指针,那么PVOID表示void*无类型指针所有指针都是一个32位二进制数(32位系统下),这个意义上说所有指针都是一样的,它们的大小

python c++ 传参-python 调用C++函数,关于结构体传参问题

问题描述 python 调用C++函数,关于结构体传参问题 python 调用C++函数,C++函数的参数类型是pyobject*,其实是一个结构体数组 类似于 #define NUM 32 stuct A { int a; int b; }; struct B { int len; A ab[NUM]; } 请问在python中如何将这个结构体数组表示出来并传给 C++函数. 我在python中用类表示的 class A: def init(self): self.a=0 self.b=0 c

C++ DLL接口结构体的转寰问题,究竟字符串内存的分配是怎样的

问题描述 C++ DLL接口结构体的转寰问题,究竟字符串内存的分配是怎样的 为什么VB6.0不需要释放内存,而同样的结构体在C++ DLL使用,C++自己反倒需要释放内存呢?字符串有什么不同? 解决方案 http://blog.csdn.net/jiftlixu/article/details/5351741 解决方案二: 结构体的内存对齐问题 解决方案三: VB和C++的思想完全不同,不建议进行对比.C++中的字符串需要看定义方法,定义成char数组的不需要释放内存,定义成char*则需要.V

Android For JNI(五)——C语言多级指针,结构体,联合体,枚举,自定义类型

Android For JNI(五)--C语言多级指针,结构体,联合体,枚举,自定义类型 我们的C已经渐渐的步入正轨了,基础过去之后,就是我们的NDK和JNI实战了 一.多级指针 指针的概念我们在前面也讲了许多,也提到了多级指针的概念,那具体我们怎么去操作呢 #include <stdio.h> #include <stdlib.h> main(){ int i = 3; //一级 int* p = &i; //二级,保存一级指针 int** w = &p; //三

理解C语言——从小菜到大神的晋级之路(10)——结构体、联合体

本节视频链接:点击这里         上篇中讲述的数组是复合数据类型中最简单的一种,一个数组使用一段连续的内存保存了若干个类型相同的数据元素.由于类型和长度相同,数组的每个元素通过数组下标和指针变量访问.如果我们希望一个结构保存多个不同类型的数据元素,那么数组将无能为力.为了实现这样的功能,C语言提供了结构体和联合体. 1.结构体基本概念 (1)结构体的定义         假设我们需要定义一个图形中的点的概念.在一个使用笛卡尔坐标系表示图像的系统中,点的位置使用两个坐标分量表示,即横坐标x和

c语言-结构体嵌套问题 ,内层数据的使用

问题描述 结构体嵌套问题 ,内层数据的使用 大致解释一下图中两行代码. 我做了一个嵌套的结构体, 现在是可以用pintf(): 打印内层结构体的数据 printf("%d",prestorehead->full->prestoreboole); 显示结果是小黑窗 中的 最后一个数字 1 而下一行代码要对 该数据进行运算却不可以了. 赋值, 运算都不可. 解决方案 为什么不把完整代码写出来,特别是main()函数我都没有看到啊!

急求解答!C#调用C++动态库的结构体参数及返回问题 50分

问题描述 最近研究读取一卡通卡号的问题,对方给了动态库DLL及函数帮助文档,计划用C#实现对cpp动态库的调用,由于cpp方面知识实在薄弱,在碰到了结构体传参的时候,一直无法正常进行.Cpp的函数说明:IntLKE_ICCR_HID_ExchangeAPDU(G_APDU_COMM*ApduComm,G_APDU_RESP*ApduResp) 参数定义:ApduComm:APDU数据包APDU应答包返回值:0:成功<0:错误ApduComm结构体-cpptypedefstruct{unsigne

C# 调用C++ OCX控件,结构体指针 在线等搭救

问题描述 ocx控件的结构体typedefstruct{charszNumber[16];charszClass[16];charszKana[16];charszArea[16];floatfAccNumber;floatfAccClass;floatfAccKana;floatfAccArea;floatfAccTotal;intiPlateSize;intiPlateColor;intiThreshold;intiVertexX[4];intiVertexY[4];intiAlgorith

Java Jni调用并编写dll详细教程

使用JNI,需要为C\C++生成JAVA调用约定头文件,并对标准windows DLL源码进行适当修改.以下以一个简单的例子演示整个过程. 环境:win7 64位操作系统,JDK1.7 64位,vs2010(安装x64编译支持). 一,编写native声明的类    代码如下 复制代码 package com.ninecmd;   public class MyClass { static { System.loadLibrary("jnidll"); } public native