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#中就可以直接使用类或结构,而不使用指针了。
谢谢

解决方案 »

  1.   

    public class TestFile

        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) 
      

  2.   

    typedef struct TestFile{ 
        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;
    };