C++嵌套结构体带数组 转C#

下面的c++代码怎么转为C#代码呢,求大神指点
C++代码:
struct can_frame {
uint32 can_id;

uchar can_dlc;
uchar __pad;

uchar __res0;

uchar __res1;

uchar data[8];
};

typedef struct tagZCAN_Transmit_Data
{
can_frame frame;
UINT transmit_type;
}ZCAN_Transmit_Data;

int main()
{
ZCAN_Transmit_Data can_data;
can_data.frame.can_id =1
can_data.frame.can_dlc =8
can_data.transmit_type = 0_;
result = ZCAN_Transmit(channel_handle_, &can_data, 1);
}

c++

1个回答

类似这个
https://blog.csdn.net/shinezhl/article/details/41411699

[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]
char data;

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
结构体嵌套,数组,指针
目录 一、结构体嵌套 二、结构体数组 三、结构体指针 四、传递结构体变量 五、传递结构体指针 六、动态申请结构体 一、结构体嵌套 下面再Book结构体中嵌套调用结构体Date #include<stdio.h> struct Date{ int year; int month; int day; }; struct Book{ char title[1...
C# 结构体嵌套转byte[]问题
先上代码rn[code=csharp]rnrn[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]rnstruct Netinforn rn [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]rn public byte[] begin;rn public byte cmd;rn public byte prio;rn public byte status;rn public SInfo s_info;rn public DInfo d_info;rn [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)]rn public byte[] dlen;rn [MarshalAs(UnmanagedType.ByValArray, SizeConst = 128)]rn public byte[] elsedata;rn [MarshalAs(UnmanagedType.ByValArray, SizeConst = 3)]rn public byte[] end;rn rnrn[StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]rnstruct SInforn rn [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]rn byte[] SIP;rn byte SHlevel;rn byte SHID;rn byte ExtID; rnrn ;rnrnrn struct DInforn rn byte DHID;rn byte ExtID; rn ;rnrn private int SendCmd(string szIp, int port, Netinfo CmdBuf)rn rn UdpClient UdpConn = new UdpClient();rn IPEndPoint IpSend = new IPEndPoint(IPAddress.Parse(szIp), port);rn byte[] buf2=new byte[148];rn int size = 0;rn size = Marshal.SizeOf(CmdBuf);rn buf2 = StructToBytes(CmdBuf); //这里传入的是一个Netinfo 结构体。转换时报错“未能封送类型,因为嵌入数组实例的长度与布局中声明的长度不匹配。”rnrn UdpConn.Send(buf2, buf2.Length, IpSend);rn return 1;rn rn rn private byte[] StructToBytes(object structObj)rn rn int size = Marshal.SizeOf(structObj);rn byte[] bytes = new byte[size];rn IntPtr structPtr = Marshal.AllocHGlobal(size);rn Marshal.StructureToPtr(structObj, structPtr, false);rn Marshal.Copy(structPtr, bytes, 0, size);rn Marshal.FreeHGlobal(structPtr);rn return bytes;rn rn rn[/code]rnrn buf2 = StructToBytes(CmdBuf); //这里传入的是一个Netinfo 结构体。转换时报错“未能封送类型,因为嵌入数组实例的长度与布局中声明的长度不匹配。” 如果不是嵌套结构体是可以正常转换的,搞了半天没搞定,求解啊~rn
C#接收C/C++DLL的结构体嵌套数组及多维数组的解决方案
在调用C/C++DLL、或者与底层交互、或者进行网络交互时,接收到的数据难免有结构体嵌套和多维数组的数据,尤其是与底层的硬件打交道时,更有可能碰到。可以先参看该文章C#调用C++DLL传递结构体数组的终极解决方案 对于结构体嵌套,我们可以按照同样的方式进行来定义结构体,从而形成嵌套,不较不好处理的是结构体数组,这里需要用到MarshalAs一个比较特别的属性ArraySubType,我们需要指定
结构体嵌套(c语言)
在学习嵌入式的时候看到很多嵌套 结构体,一直不会,最近自己对照写了简单的程序,嵌套了2次,对初学者很有应该有帮助,用的是多层次结构的,编译用的VC++6.0软件。
C# 结构体嵌套问题!!!
结构体嵌套问题!rn在类class SysStruct中创建结构体:rnpublic struct Amsgrnrn public string AName;rn public struct Brn rn public string BName;rn rn public B[] bmsg;rnrn在全局变量Global类中创建全局变量集合:rnstatic public List GList = new List ();rnrn在保存数据窗口FORM中做如下操作rn//声明一个临时变量的集合rnprivate List tempList = new List ();rn//将全局变量赋值到本窗体变量中rnPublicMethod.ListCopy(Global.GList, tempList );rn//修改参数rn private void btnSave_Click(object sender, EventArgs e)rn rn //声明结构体 rn SysStruct.Amsg rmsg = new SysStruct.Amsg();rn //修改结构体集合,先将集合中待修改的项赋值到一个新的结构体,在将此项删除rn foreach (SysStruct.Amsg v in tempList)rn rn if (v.AName == name)rn rn rmsg = v;rn tempList.Remove(v);rn break;rn rn rn //添加新项rn for (int i = 0; i < 8; i++)rn rn rmsg.bmsg[i].BName = tbxname[i].Text.Trim();rn //问题出在此处,rmsg.bmsg[i]值发生变化后,Global.GList的值也变化了!!! rn rn tempList.Add(rmsg);rn //将临时变量赋值到全局变量中 rn PublicMethod.ListCopy(tempList, Global.GList);rnrnrn
【求教】结构体带指针嵌套
这是一个不小的作业的开头= =rn定义结构体如下:rnstruct subjectrnrn char name[8]; rn int value; rn int work;rn;rnrnstruct dictionaryrnrn struct subject *subj;rn int n;rn;rn要写一个函数从一个文本文件中读取数据存入一个dictionary类型的变量(如dict)中,然后返回dict,文件内容是这样的:rn2.00 5 9rn2.01 2 2rn2.02 1 17rn2.03 6 1rn2.04 3 2rn2.05 2 2rn2.06 2 1rn2.07 1 1rn2.08 5 5rn……………(后面还有很多)rnrndict里只有一个整数和一个subject类型的指针,我是新弄了一个subject类型的结构体数组来存文本里的东西,然后用dict.subj指向这个结构体数组,这样倒是能运行,但是感觉不符合要求,因为这是一个大程序的开头,整体结构已经有了,原程序结构并没有给一个全局的subject数组来存文件,如果放在读取的函数里面出了函数就消失了;后面还要求写一个显示dict的函数,要把存了文件的dict显示出来。rnrn可以不加新数组来解决这个问题否?
go结构体嵌套的切片数组
package main import ( &quot;fmt&quot; ) type XCDataStu struct { Id int `json:&quot;id&quot; xorm:&quot;id&quot;` Name string `json:&quot;name&quot; xorm:&quot;name&quot;` } type XCDataStu1 struct { Id int `json:&quot;id&quot; x
C#byte数组转结构体
public object BytesToStruct(byte[] bytes, Type strcutType) { int Size; IntPtr ptr; object obj; Size = Marshal.SizeOf(strcutType); ptr
关于结构体嵌套中的数组
看了几个小时了,还是没弄明白,现在把相关的定义都贴出来,请各位帮忙rnrn[code=C/C++][/code]#define ECCSMSG8 (*((struct eccsmsg8 *)(CANDATA[ECCSMSG8_DEF].DATA)))rnrn#define ECCSMSG8_DEF 14rnrnstruct candatarnrn struct dataflg FLG;rn uchar8 COUNT;rn uchar8 DATA[8];rn;rnrn#define CANDATA ((struct candata *)&vCANDATA_bios)rnrnuchar8 CANDATA_bios[37][10] ;rnrnstruct eccsmsg8rnrn uchar8 DTCCODE_L; /* DT0 */rn uchar8 DTCCODE_H; /* DT1 */rn uchar8 ENSTNG :1; /* DT2 bit7 */rn uchar8 ECMNG :1; /* DT2 bit6 */rn uchar8 ETCNG :1; /* DT2 bit5 */rn uchar8 FCNG :1; /* DT2 bit4 */rn uchar8 CANNGF :1; /* DT2 bit3 */rn uchar8 :1; /* DT2 bit2 */rn uchar8 ECSMSG8C :2; /* DT2 bit1-0 */rn uchar8 :8; /* DT3 */ /* [192]M */rn uchar8 :8; /* DT4 */ /* [192]M */rn uchar8 :6; /* DT5 bit7-2 */ /* [192]M */rn uchar8 ISSAP :1; /* DT5 bit1 */ /* [192]M */rn uchar8 SPTMD_LMP :1; /* DT5 bit0 */ /* [192]M */rn uchar8 IDSTSTB :1; /* DT6 bit7 */ /* [192]M */rn uchar8 IDSTSTS :1; /* DT6 bit6 */ /* [192]M */rn uchar8 ISACT :1; /* DT6 bit5 */ /* [192]M */rn uchar8 ISBRKREQ :1; /* DT6 bit4 */ /* [192]M */rn uchar8 ISINDMD :2; /* DT6 bit3-2 */ /* [192]M */rn uchar8 ISMSKSW :1; /* DT6 bit1 */ /* [192]M */rn uchar8 CHRGLREQ :1; /* DT6 bit0 */ /* [192]M */rn uchar8 SHARE_ECO_BOOST :8; /* DT7 */ /* [206]M */rn;rnrnrnvCANDATA_bios[14][9]即ECCSMSG8.SHARE_ECO_BOOST,是怎么得来的?
结构体转char数组
如题,因为结构体内的地址不是连续的,怎么将一个结构体转为一段连续的字符串?rn[code=c]struct jointrnrnbool b;rnint x;rndouble y;rn;rn[/code]rn之后再用send函数发送然后再解析。
C# 结构体转byte数组 问题
public static byte[] StructToBytes(object structObj)rn rn //得到结构体的大小rn int size = Marshal.SizeOf(structObj);rn //创建byte数组rn byte[] bytes = new byte[size];rn //分配结构体大小的内存空间rn IntPtr structPtr = Marshal.AllocHGlobal(size);rn //将结构体拷到分配好的内存空间rn Marshal.StructureToPtr(structObj, structPtr, false);rn //从内存空间拷到byte数组rn Marshal.Copy(structPtr, bytes, 0, size);rn //释放内存空间rn Marshal.FreeHGlobal(structPtr);rn //返回byte数组rn return bytes;rn rnrn //定义rn [StructLayoutAttribute(LayoutKind.Sequential, CharSet = CharSet.Ansi, Pack = 1)]rn public struct PackHeadrn rn [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 8)]rn public string Flg; //标志rn rnrn Flg中如果有数字,转换就不正确,请教高手指点.rn
c中的结构体嵌套问题
struct outer rn struct inner rn member;rn;rnrnstruct outer var1;rnrn像上面这样的结构体,如果我想要声明一个inner的变量该如何写:rnrnstruct outer::inner var2; // 这样无法编译
C经典 结构体的自身嵌套
#include <stdio.h>int main(int argc, const char * argv[]) { // struct Student{ int age; char *name; struct Student *child; }; struct Student tom ={4,"tom",NULL};
C语言-结构体指针及结构体嵌套
C语言中结构体是一种构造类型,和数组、基本数据类型一样,可以定义指向该种类型的指针。结构体指针的定义类似其他基本数据类型的定义,格式如下 struct 结构体名 * 指针名; 比如: struct person{char[20] name; int age;};//先定义一个人的结构体 struct person *p;//然后可以定义一个人的结构体指针 struct person p1
c类结构体嵌套函数
//c类结构体嵌套函数//typdef  void (*pfunc)(int a, int b){retrun;}/*typedef struct stu{ int a; int b; pfunc func;}*///c++中的构造函数和析构函数//#include&amp;lt;iostream&amp;gt;//using namespace std;/*#include&amp;lt;stdio.h&amp;gt;#inc...
c#调用 VC嵌套结构体
我需要调用一个VC的dll,其中一个函数需要传递一个嵌套结构体,声明如下:rntypedef structrnrn int alarmtype; rn int checkvaltype; rn short relayno;rn float alarmtemp;rn short reserver;rnALARMSETTING, *LPALARMSETTING;rnrntypedef structrnrn int cbSize;//结构体的长度rn char Caption[50];rn short fiberport; rn short serialno; rn int startposition;rn int endposition;rn short lesspoint;rn int AlarmItemCount;rn ALARMSETTING AlarmItem[ALARMITEMCOUNT]; rnrnMEASUREFIBERSECT, *LPMEASUREFIBERSECT;rn函数为rnDLLPORT int WINAPI FDAddMeasureSect(int icontrol, LPMEASUREFIBERSECT palarm);rn我在c#中对应的声明为:rn public struct ALARMSETTING rnrn public int alarmtype;rn public int checkvaltype;rn public short relayno;rn public float alarmtemp;rn public short reserver;rnrnrn[StructLayout(LayoutKind.Sequential,Pack=1)]rn public struct MEASUREFIBERSECT rnrn public int cbSize;rn [MarshalAs(UnmanagedType.ByValArray,SizeConst=50)]rn public char[] caption;rn public short fiberport;rn public short serialno;rn public int startposition;rn public int endposition;rn public short lesspoint;rn public int AlarmItemCount;rn [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)]rn ublic ALARMSETTING[] AlarmItems;rnrn函数声明为:rn[DllImport("FDInterface.dll")]rnpublic static extern int FDAddMeasureSect(int icontrol,ref MEASUREFIBERSECT palarm);rn使用时:rnMEASUREFIBERSECT palarm = new MEASUREFIBERSECT();rn对palarm进行赋值rn最后对palarm.cbSize进行赋值,表示整个结构体的长度rnpalarm.cbSize = Convert.ToInt16(Marshal.SizeOf(palarm));rnint result=FDAddMeasureSect(this.DeviceID,ref palarm);rnrn调用的过程中函数没有报错,调用成功,可是最后dll执行的结果不对。这个dll肯定没有问题,因为我们以前使用VB 调用的时候没有问题,我想知道我的代码在什么地方有问题,感谢大家,我没有分了,希望大家能帮帮我
如何将C的结构体转换为C#?
如下:rn#pragma pack(push, 1)rnrntypedef structrnrn int magicNumber;rn char id[16];rn int timeStamp;rn char account[21];rnCommSpyHeader;rnrnrn#pragma pack(pop)rnrnrn写成文件用C#实现,读取的地方用C++实现。rnrn请问C#如何定义,我想直接把结构体写入文件,这样方便些。rnrnrn
C 结构体如何转换为 C#
typedef struct _SALEDATArnrn char szInsureDate[20]; //发车日期rn char szBillCertiNo[22]; //单证号rn char szInsureName[15]; //投保人姓名rn char szInsuredName[15]; //被保人姓名rn char szInsuredIdentityNo[20]; //被保人证件号rn char szSaleDate[20]; //销售日期(格式:如20100101代表2010年1月1日)rn char szSaleTime[20]; //销售时间(格式:如121122代表12点11分22秒)rn char szTrainNO[20]; //车次号rn char szFrom[20]; //发车站名rn char szTo[20]; //到站名称rn char szPewNo[20]; //座位号rn char szTicketNo[20]; //车票号rn BYTE bInsuredIdentityType; //被保人证件类型(0身份证,1护照,2军官证,3在华居住证,4其他)rn int nTranType; //交易类型(0出单,1退单,2废单)rn SALEDATA, *PSALEDATA;rnrn这样的结构体 在C# 中如何定义rn
C++结构体转C#
如下所示的C++结构如果转为C#?rnrn主要是后面那个 :数 代表什么意思?rnrn[code=c]rn// 时间定义rntypedef struct _ZLNET_DEVTIMErnrn DWORD second :6; // 秒 1-60 rn DWORD minute :6; // 分 1-60 rn DWORD hour :5; // 时 1-24 rn DWORD day :5; // 日 1-31 rn DWORD month rn[/code]rnrn转为C# 应该是怎么的?rnrn
c++ 转 c# 结构体
请问如何将下面的c++结构体转成c#rnstruct VarSetValuern unsigned m_index;rn char m_Name[20];rn union rn float m_fVal;rn unsigned __int32 m_iVal;rn ;rnrn;
【c#】枚举 / 结构体 / 数组
一、枚举(enum) 枚举在主函数外面定义,每个值对应一个数字。 例如: public enum Gender { 男, 女 } 这是比较典型的enum的例子,在枚举中一定要注意用“,”隔开(英文状态下)。 做好定义就可以在主函数中调用了,有两种方法可以进行调用 方法一: Gender gender = Gender.男;//有规范...
C#多维数组与嵌套数组
C#多维数组与嵌套数组 using System; namespace abc.e.f//等价于下面分层嵌套的写法。且这种写法不管命名空间abc有没有定义过,也不管命名空间e有没有定义过 { class MYTestX { static void Main(string[] args) { ...
C#结构体中的数组
//文件头rn [StructLayout(LayoutKind.Explicit)]rn public struct FileHeaderrn rn [FieldOffset(0)] public ushort bfType; //rn [FieldOffset(2)] public uint bfSize; //用字节表示的文件大小rn [FieldOffset(6)] public ushort bfReserved1; rn [FieldOffset(8)] public ushort bfReserved2; rn [FieldOffset(10)] public uint bfOffBits; rn rn //位图信息头rn [StructLayout(LayoutKind.Explicit)]rn public struct InfoHeaderrn rn [FieldOffset(0)] public uint biSize; rn [FieldOffset(4)] public uint biWidth; rn [FieldOffset(8)] public uint biHeight; rn [FieldOffset(12)] public ushort biPlanes;rn [FieldOffset(14)] public ushort biBitCount;rn [FieldOffset(16)] public uint biCompression;rn [FieldOffset(20)] public uint biSizehuage;rn [FieldOffset(24)] public uint biXPlesPexMeter;rn [FieldOffset(28)] public uint biYPelsPerMeter;rn [FieldOffset(32)] public uint biClrUsed;rn [FieldOffset(36)] public uint biClrImportant;rn [FieldOffset(40)] public uint bmiColors;rn rn //颜色表rn [StructLayout(LayoutKind.Explicit)]rn public struct RgbQuadrn rn [FieldOffset(0)] public byte rgbBlue;rn [FieldOffset(1)] public byte rgbGreen;rn [FieldOffset(2)] public byte rgbRed;rn [FieldOffset(3)] public byte rgbReserved;rn rn//位图信息头和颜色表组成的位图信息rn [StructLayout(LayoutKind.Explicit)]rn public struct BmpInforn rn [FieldOffset(0)] public FileHeader fileHeader;rn [FieldOffset(14)] public InfoHeader bmiHeader;rn rn [FieldOffset(58)] public RgbQuad[] bmiColor=new RgbQuad[1];rn rn结构体中声明结构体数组,怎么老出错啊??rn救命啊!
C# 将结构体转化为byte数组,byte数组转化为结构体
 1.将结构体转化为byte数组 #region /// &amp;lt;summary&amp;gt; /// 结构体转为byte数组 /// &amp;lt;/summary&amp;gt; /// &amp;lt;typeparam name=&quot;T&quot;&amp;gt;&amp;lt;/typeparam&amp;gt; /// &amp;lt;par...
结构体嵌套结构体
struct device rn struct device *parent;rn ……rn rn什么意思啊,怎么结构体嵌套着结构体不就无限循环了么?
结构体嵌套
#include #define LEN 20 const char * msgs[5] = {     "    Thank you for the wonderful evening, ",     "You certainly prove that a ",     "is a special kind of guy. We must get together",     "
结构体转char数组,然后在转回来
struct Arnrn int a;rnrnA.a=1;rn现在要把这个结构体整到数组b[100]里,通过socket send() 发送,另一个接收后,在转回结构体,读出a的值;
求:c#结构体内数组以及结构体嵌套
/*结构体原型rntypedef struct rnunsigned int s;rnunsigned int d; rnunsigned int SP[4][4];rn A;rnrntypedef struct rnunsigned char mv; rnunsigned char n; rnB sb; rnunsigned int cn; rnunsigned int Seg[8]; rnint* r1; rnunsigned char* r2[512]; rn B; rnrn*/rn用C#怎么写rn
go json嵌套数组结构体用法
由于之前没有很好理解json,导致今天写单元测试的时候写json嵌套出现了大麻烦,记录一下。 golang生成json和解json数据都很简单,通过官方的“encoding/json”包,调用json.Marshal生成()和json.Unmarshal()解数据。 接下来重点讲嵌套的情况下如何生成json,如下:type AlipayRemoteReqStruct struct { O
结构体嵌套 定义结构体出错
typedef structrnrn BYTE customer_name[40];rn BYTE dcc_customer_no[30];rndcc_customer_t;rnrntypedef structrn rn dcc_customer_t[4];rndcc_t;rnrnvoid main()rnrn dcc_t dcc_info[5];rn
12-6结构体嵌套与结构体大小
C语言基础入门到进阶教程,共16天,每天6节课,每节40分钟课堂实录,带你征服C语言,让所有学过和没有学过C语言的人,或是正准备学习C语言的人,找到学习C语言的不二法门。该课程涵盖C语言所有知识点,并且结合大量的案例,让人一听便懂。
关于结构体中嵌套结构体
最近在做一个链表rn但是在结构体中嵌套结构体的时候,系统报错rn说:..struct node *,int,int)' already has a bodyrnrn我是菜鸟,觉得定义结构的时候嵌套结构应该没有错哦..想文一下大家具体可能哪出问题了哦...rnrn代码如下:rnrnrnrntypedef struct node //结点类型定义rn DataType data; //结点的数据域rn struct node *next; //结点的指针域rnListNode;rntypedef ListNode *LinkList;rnrnrnvoid InsertList(LinkList head,DataType x,int i)rnrn //在此插入必要的语句rn /*将值为x的新结点插入到带头结点的单链表head的第i个结点的位置上*/rn ListNode *p,*s;rn p=GetNode(head,i-1); /*寻找第i-1个结点*/rn if(p==NULL)rn rn printf("插入位置非法\n");rn exit(0);rn rn s=(ListNode *)malloc(sizeof(ListNode)); /*生成新结点*/rn s->data=x;rn s->next=p->next;rn p->next=s;rnrnrnrnrnrnrn当使用InsertList这个方法的时候 系统报错说rn'void __cdecl InsertList(struct node *,int,int)' already has a bodyrnrn可是理论上结构体中是可以嵌套结构体的呀...请达人解答,谢谢
lua c结构体转table
lua table数据类型和c结构体数据类型相互转换 本周有个任务,是将json数据和C结构体数据进行互相转换,初一看很简单,有两个方案去做。但是都是很麻烦,要么做起来简单,要么工作量大,要么工作量少,难度极高,最后找到一个折中的办法,就是通过修改源码来提供捷径。 问题描述: 公司的游戏服务器是由c++实现的,而客户端是android或者ios上实现的,这时的数据交互就是打包二进制数...
C语言结构体和数组的转换
#include #include #define LEN 14 #define uint16_t unsigned short int #define uint8_t unsigned char typedef struct{ uint16_t Head; uint8_t SourceID; uint8_t DestinationID; uint8_t Command
c语言基础之指针、数组和结构体
    指针是c语言的灵魂怎么强调都不为过,指针也是c语言最复杂和难理解的概念,数组是多个类型相同的变量在一块连续的内存空间,数组是最基本也算是最简单的数据结构,结构体本质上就像是一个包裹,包含了一个或多个类型的变量,结构体就像面向对像的类一样给我们提供了一个抽象的思维方式。        该怎样去理解指针呢,这里破砖引玉说一下我的看法,学习一个新东西的时候可以在脑子里想像一个和生活中比较相似的概...
C语言 结构体 数组 指针
C语言 结构体
C语言 指针、结构体、数组
MD5_CTX MD5; MD5Init(&MD5); printf("MD5: %x \n", MD5); printf("&MD5: %x \n", &MD5); printf("MD5: %p \n", MD5); int data = 123; MD5Update(&MD5, &data, 4); unsigned char rsl[16]; unsigned char
C# 图片 转 C语言数组文件
求大神指导图片转化成C语言数组rn类似这种rnconst unsigned char gImage_11[6786] = 0X00,0X01,0XF0,0X00,0XE2,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, 0X00,0X00,0X00,0X03,0XBF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00, 0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00, 0X00,0X02,0XBF,0XFB,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0XFF,0X00,0X00,0X00,0X00,。。。。。。rn
C#调C语言DLL ,不能返回嵌套结构体的值
C语言:rnrntypedef struct DecisionTreeNodern int keynum; rn char SelectedAttributeName[Max_Attribute_Name_Length]; rn char AttributeValue[Max_Attribute_Name_Length]; rn int Record_Marker[Max_Record_Number];rn int Attribute_Marker[Max_Attribute_Number];rn [color=#FF0000]struct DecisionTreeNode *ptr[Max_Discrete_Value_Number];[/color]rnDecisionTreeNode, *DecisionTree;rnextern"C"_declspec(dllexport)DecisionTree C4_5_main(DecisionTree Tree)rnrn /////////////////////////////////Coding..........................rn return Tree;rnrnrnC# :rn [StructLayoutAttribute(System.Runtime.InteropServices.LayoutKind.Sequential, CharSet = System.Runtime.InteropServices.CharSet.Ansi)]rn public struct DecisionTreeNodern rn public int keynum;rnrn [MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 10)]rn public string SelectedAttributeName;rnrn /// char[30]rn [System.Runtime.InteropServices.MarshalAsAttribute(UnmanagedType.ByValTStr, SizeConst = 10)]rn public string AttributeValue;rnrn /// int[800]rn [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = 800, ArraySubType = System.Runtime.InteropServices.UnmanagedType.I4)]rn public int[] Record_Marker;rnrn /// int[10]rn [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = 10, ArraySubType = System.Runtime.InteropServices.UnmanagedType.I4)]rn public int[] Attribute_Marker;rnrn /// DecisionTreeNode*[5]rn [System.Runtime.InteropServices.MarshalAsAttribute(System.Runtime.InteropServices.UnmanagedType.ByValArray, SizeConst = 5, ArraySubType = System.Runtime.InteropServices.UnmanagedType.SysUInt)]rn [color=#FF0000] public System.IntPtr[] ptr;[/color]rn //public DecisionTreeNode[] ptr1;rn rn [DllImport("C4.5_DLL.dll", CallingConvention = CallingConvention.Cdecl, CharSet = CharSet.Auto)]rn private extern static IntPtr C4_5_main();rnrn unsafe static void Main(string[] args)rn rn [color=#FF0000] IntPtr ptr = C4_5_main();rn DecisionTreeNode tree = (DecisionTreeNode)Marshal.PtrToStructure(ptr, typeof(DecisionTreeNode));[/color]rn rnrn 现在就是 public System.IntPtr[] ptr;中不能得到struct DecisionTreeNode *ptr[Max_Discrete_Value_Number]; 的值rn大家看看应该怎样封装和接受嵌套结构体中的值rn
c语言数组 与结构体类型
[img=https://img-bbs.csdn.net/upload/201604/17/1460884016_554937.png][/img]rn请问二维数组的第二个数为什么是 __attribute__((section(".flash"))),还有 __attribute__((section(".flash")))是什么意思啊?rn[img=https://img-bbs.csdn.net/upload/201604/17/1460884221_966280.png][/img]rn((aligned(2), packed))是什么意思啊?rnrn[img=https://img-bbs.csdn.net/upload/201604/17/1460884377_599604.png][/img]rnrnrn有哪位大神知道啊???
相关热词 c# login 居中 c# 考试软件 c# 自然语言分析 c# 分段读取文件 c# 泛型反射 c#打断点 c# 时间转多少秒 c# 线程函数加参数 c# modbus 读取 c#查询集合表