shamantou blog site

shamantou@gmail.com

导航

C#中调用C++的DLL

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加上数据变量则可获得返回值

<< 拉布拉多C结构体对齐 >>

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最近发表

Powered By Z-Blog 1.8 Arwen Build 81206 Copyright 2006-2009 | ooplab.org | shamantou@gmail.com | 沪ICP备08011244号 | Some Rights Reserved.