我需要C#里面用VC编的Dll库,现在存在两个问题:
1、在DLL里面有个未定义的结构体,
例如:typedef struct command *com;
我在C# 转换时,定义为using com = System.Intptr;
可以吗?
如果VC内的接口函数为IMPORT_EXPORT bool function(const com handle);
我在C#内转换为  [DllImport("plusdll.dll")]
            public static extern bool function(com handle);是否正确?
最后调用时用:com handle=new com() ;
              TR_OpenAccount(handle);是否正确?2、还有C#怎么转换VC函数参数为指针的指针情况?比如:IMPORT_EXPORT TR_CMDRESULT function(WORD** results,DWORD* number);

解决方案 »

  1.   

    1、有点问题,因为.net 调用本地dll,传送数据是把托管类型封送到非托管,所以如果一个不明确的类型,调用会有问题。
    2、** 方式可以用ref IntPtr;
      

  2.   

    那是说如果函数参数是指针的指针,不论是什么类型,DWORD 还是BYTE,转换时都用ref Intptr 都行?
      

  3.   

    那第一个问题就没有解决的办法了吗?这是别人给的DLL,难道只能他那边改吗?