C#调用c编写的dll时,返回一个结构指针,我应如何写.net wrapper?
如:对于如下方法(C语言中)
TestFile* file_open( const char * filename ) 其中,
typedef struct TestFile{
unsigned user_id;
void* user_ptr;
unsigned mesh_version;
unsigned keyf_revision;
char name[12+1];
float master_scale;
} TestFile; 如果C#中,public static extern IntPtr file_open(string path);如何将返回的intptr转换(解析)成C#中对应的结构或类?这样在C#中就可以直接使用类或结构,而不使用指针了。
谢谢
如:对于如下方法(C语言中)
TestFile* file_open( const char * filename ) 其中,
typedef struct TestFile{
unsigned user_id;
void* user_ptr;
unsigned mesh_version;
unsigned keyf_revision;
char name[12+1];
float master_scale;
} TestFile; 如果C#中,public static extern IntPtr file_open(string path);如何将返回的intptr转换(解析)成C#中对应的结构或类?这样在C#中就可以直接使用类或结构,而不使用指针了。
谢谢
{
byte user_id;
object user_ptr;
byte mesh_version;
byte keyf_revision;
char[] name = new char[13];
float master_scale;
}//声明成这样试试。
TestFile file_open(string filename)
unsigned user_id;
void* user_ptr;
unsigned mesh_version;
unsigned keyf_revision;
char name[12+1];
float master_scale;
} TestFile
[STRUCTlAYOUT(Layoutkind.s.....,pack=1,charset=charset.ascii)]
public struct TestFile{
public byte user_id;
pu blic intptr user_ptr;
public ???unsigned???类型;
public ???同上;
[marshalas(bystr...,sizeconst=13)]
public string name;
public float master_scale;
};