C#调用C语言结DLL 结构体不会封装,怎么在C#中对应C语言的结构体呢

问题描述

//决策树节点typedefstruct{char*RecordData[1000][100];//训练数据intRecord_Number;/*训练数据的行数*/intAttribute_Number;/*训练数据的列数*/}TrainDataNode;typedefstructDecisionTreeNode{intkeynum;charSelectedAttributeName[30];//选择的属性名charAttributeValue[30];//属性值intRecord_Marker[1000];//?????intAttribute_Marker[100];structDecisionTreeNode*ptr[50];}DecisionTreeNode,*DecisionTree;C语言的结构体,做成DLL,C#中怎么封装调用呢,急求各位大侠帮我解决下

解决方案

本帖最后由 asdfg48_ 于 2014-10-27 21:51:05 编辑
解决方案二:
先顶为敬
解决方案三:
本帖最后由 jiangsheng 于 2014-10-27 22:42:30 编辑
解决方案四:
引用2楼jiangsheng的回复:

这里面有指针啊,C++的DLL是32位还是64位?

64位的
解决方案五:
可以参考一下:
解决方案六:
引用4楼save4me的回复:

可以参考一下:

引用4楼save4me的回复:

可以参考一下:

引用4楼save4me的回复:

可以参考一下:

char*RecordData[1000][100];//训练数据这句应该怎么转化呢,二维的呀
解决方案七:
引用2楼jiangsheng的回复:

去下载http://clrinterop.codeplex.com/releases/view/14120然后用这个来转换你的C++代码

这个东西怎么用,我英语不好啊,看不明白
解决方案八:
参考:可以先定义子结构体,然后再转,就相当于分两步引用5楼asdfg48_的回复:

char*RecordData[1000][100];//训练数据这句应该怎么转化呢,二维的呀

时间: 2024-10-03 13:55:46

C#调用C语言结DLL 结构体不会封装,怎么在C#中对应C语言的结构体呢的相关文章

c#调用c语言的dll,求大神

问题描述 用c语言编写了一个des加密算法,并生成了dll,想用c#做个窗口调用C语言的dll中voidencrypt(chardata[64],charkey[64],charcipher[64])这个函数,该怎么办?已经试过各种,困难重重啊!求助!!! 解决方案 解决方案二:引用楼主qq_15397417的回复: 用c语言编写了一个des加密算法,并生成了dll,想用c#做个窗口调用C语言的dll中voidencrypt(chardata[64],charkey[64],charcipher

C++中结构体的类型定义和初始化以及变量引用_C 语言

C++结构体类型的定义和初始化 有时需要将不同类型的数据组合成一个有机的整体,以供用户方便地使用.这些组合在一个整体中的数据是互相联系的.例如,一个学生的学号.姓名.性别.年龄.成绩.家庭地址等项,都是这个学生的属性,见图 可以看到学号(num).姓名(name).性别(sex).年龄(age).成绩(score ).地址(addr)是与姓名为"Li Fun"的学生有关的.如果在程序中将num,name,sex,age,score,addr分别定义为互相独立的变量,就难以反映出它们之间

c语言-C语言结共用体问题求教并求详细解释

问题描述 C语言结共用体问题求教并求详细解释 union dt{int a;char b;double c;}data;以下叙述中错误的是 A)data的每个成员起始地址都相同 B)变量data所占内存字节数与成员c所占字节数相等 C)程序段:data.a=5;printf("%f",data.c);输出结果为5.000000 D)data可以作为函数的实参 ====求教应该选哪个答案?并求详细解释 解决方案 C 因为所有浮点数类型在内存中的存储方式是不同的 解决方案二: 答案为D,这

c#调用c++编写的dll总是出现问题,哪位高手帮帮忙

问题描述 我的这个程序,使用c#调用c++编写的dll,总是出现以下这个问题,那位高手能够帮帮忙,小女子在此先感谢了.大家就救我吧.c++编写的dll中的函数voidEFSgetUsrThesaurus(pUsrDicFileNameTableDicFlNmTbl,pUsrKeyWordTableKeyWdTbl,pUsrThesaurusTableThTbl,EFSDICSTATUS*EFS_dicstatus);c++中的结构体typedefstruct{intCnt;struct{char

C#中怎么读取Struct(结构体)文件!!!!???大虾帮帮我啊。。。。。

问题描述 做项目需要读取一个.DAT文件,这个文件是别人给的,里面记录了一些调试需要用到的参数,是用结构体(Struct)写成的,用的是C++写的.....现在我拿到了这个.dat文件的结构,里面大致形式为(嵌套的结构体):structA{...structB{....structC{.....}}}好像用C++读取很容易,但我目前的软件都是用C#写的,只能在C#里面读了,这个要怎么读啊?网上找了一些资料,看上去好复杂,哪位大虾能详细的讲一下啊,谢谢!!!!还有,我曾经想过是否可以用C++写一个

C#调用VC++写的DLL时报错:无效的托管/非托管类型组合(Int16/UInt16 必须与 I2 或 U2 成对出现)

问题描述 函数原型:unsignedshortGX_GetMessageForWindows(unsignedshortWaitTime,PGX_MESSAGE_INFOpMessageBuffer)功能:获取USB语音盒的事件参数:WaitTime无意义,保留pMessageBuffer指向GX_MESSAGE_INFO结构的地址指针,用于存放返回的事件,GX_MESSAGE_INFO的结构定义如下:typedefstruct_GX_MESSAGE_INFO{USHORTMessageCode

c语言-C语言实现封包解包,有一个消息由标识位,消息头,消息体和校验码组成,如何用C实现对它的封包和解包?

问题描述 C语言实现封包解包,有一个消息由标识位,消息头,消息体和校验码组成,如何用C实现对它的封包和解包? 有一个消息由标识位,消息头,消息体和校验码组成,如何用C实现对它的封包和解包? 解决方案 直接定义成结构体 解决方案二: 定义结构体,然后里面用不同字段定义标识位,消息头,消息体,校验码等 解决方案三: 是呀,如果都是按字节来分的,定位为结构体是一个好方法.

PHP调用C#开发的dll类库方法

  这篇文章主要介绍了PHP调用C#开发的dll类库方法,包含一个完整的详细的DLL制作步骤和PHP调用方法,需要的朋友可以参考下 有的时候,我们需要在php中利用到其他语言编写的dll类库,如C#编写的dll,方法就是利用PHP new COM方法来调用,在调用之前先要把dll库注册并把程序集放入到全局缓存中. 1. 创建一个 C# Class Library ,命名为:HelloWorld 2. 打开项目的属性,在点选左边的 "Application"(就是第一个tab) , 然后

c-关于VB.net调用C生成的dll,遇到的比字符集不匹配还纠结的问题

问题描述 关于VB.net调用C生成的dll,遇到的比字符集不匹配还纠结的问题 升级项目.从6.0到2012.升级后出现调用dll中c的方法:DLLEXPORT BOOL WINAPI InsUpdDel( LPSTR lpSqlStr LPRTNINFO RtnInfo )其中 LPSTR lpSqlStr 是_char × 类型,在API _winnt.h中定义:winnt.h // ANSI (Multi-byte Character) types//typedef Null_termin