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

时间:2022-08-30 19:56:24
//决策树节点
typedef struct{
char *RecordData[1000][100]; //训练数据
int Record_Number;       /*训练数据的行数*/
int Attribute_Number;    /*训练数据的列数*/
}TrainDataNode;

typedef struct DecisionTreeNode{
int  keynum;
    char SelectedAttributeName[30]; //选择的属性名
char AttributeValue[30]; //属性值
int  Record_Marker[1000];          //?????
int  Attribute_Marker[100];
struct DecisionTreeNode  *ptr[50];
}DecisionTreeNode, *DecisionTree;
C语言的结构体,做成DLL,C#中怎么封装调用呢,急求各位大侠帮我解决下

7 个解决方案

#1


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

#2


本帖最后由 jiangsheng 于 2014-10-27 22:42:30 编辑
去下载http://clrinterop.codeplex.com/releases/view/14120然后用这个来转换你的C++代码

#3


引用 2 楼 jiangsheng 的回复:
这里面有指针啊,C++的DLL是32位还是64位?

64位的

#5


引用 4 楼 save4me 的回复:
可以参考一下:  Marshalling Complicated Structures using PInvoke


引用 4 楼 save4me 的回复:
可以参考一下:  Marshalling Complicated Structures using PInvoke


引用 4 楼 save4me 的回复:
可以参考一下:  Marshalling Complicated Structures using PInvoke



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

#6


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


这个东西怎么用,我英语不好啊,看不明白

#7


参考:  平台调用P-INVOKE高级篇(一)--(封送含有二维数组的结构体)
可以先定义子结构体,然后再转,就相当于分两步
引用 5 楼 asdfg48_ 的回复:
char *RecordData[1000][100]; //训练数据 这句应该怎么转化呢,二维的呀

#1


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

#2


本帖最后由 jiangsheng 于 2014-10-27 22:42:30 编辑
去下载http://clrinterop.codeplex.com/releases/view/14120然后用这个来转换你的C++代码

#3


引用 2 楼 jiangsheng 的回复:
这里面有指针啊,C++的DLL是32位还是64位?

64位的

#4


#5


引用 4 楼 save4me 的回复:
可以参考一下:  Marshalling Complicated Structures using PInvoke


引用 4 楼 save4me 的回复:
可以参考一下:  Marshalling Complicated Structures using PInvoke


引用 4 楼 save4me 的回复:
可以参考一下:  Marshalling Complicated Structures using PInvoke



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

#6


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


这个东西怎么用,我英语不好啊,看不明白

#7


参考:  平台调用P-INVOKE高级篇(一)--(封送含有二维数组的结构体)
可以先定义子结构体,然后再转,就相当于分两步
引用 5 楼 asdfg48_ 的回复:
char *RecordData[1000][100]; //训练数据 这句应该怎么转化呢,二维的呀