明飞的技术园地

笨鸟先飞
  博客园  :: 新随笔  :: 联系 :: 管理

 c++ dll中的原型
int test(char* xm,char* fa,UINT &VerNum,double Mile,char *SurvMile);
c#调用时
 [DllImport(@"Test2.DLL")]
public static extern int test(string xm,string fa,ref UInt32 VerNum,double Mile, StringBuilder SurvMile);

 注意:
1.调用的时候,有部分char* ,如果想获得返回值,不能用string 作参数来进行调用,这样得不到返回到结果,可以用StringBuilder来声明变 
 StringBuilder   strMyTemp  =   new   StringBuilder(256);//256是长度
2.结构体的引用传递
  首先在c#中定义和c++相同的结构体,如果是引用传递,在结构体前面加上[In, Out]
     [DllImport(@"test.dll")]
     public static extern int test([In, Out] SLineData[] lndt,ref UInt32 length);

3.其他的类型如整形等等用ref加上数据变量则可获得返回值