[DllImport("myDll.dll")]
static extern Int32 GameGate(string mydata, StringBuilder IP, StringBuilder Port);StringBuilder IP = new StringBuilder(20);
StringBuilder Port= new StringBuilder(20);// 调用  
int i=GameGate(s,IP,Port);
======================================================设置s 一样 
为什么我得到的IP 或者 Port 会不同  ,不同的地方是IP后面会出现一些乱78糟的东西
这个DLl在VB里调用好好的 没问题的。
 我估计是 StringBuilder  出问题。 一样的代码执行几次会出不同结果。各位帮忙看看啊

解决方案 »

  1.   

    用 string 吧.为什么要用 StringBuilder ?
    StringBuilder Port= new StringBuilder(20); //不够20个字符是会用随机字符填充的参数加入out呢? int i=GameGate(s,out IP,out Port);
      

  2.   

    such as
    [DllImport("shell32.dll", CharSet=CharSet.Auto)]
      

  3.   

    CharSet设Auto仅对Windows API管用,别的API还是自己设Unicode还是Ansi
    默认是Ansi好像,不应该有问题呀。
      

  4.   

    code 没看明白,
    up 一下吧
      

  5.   

    到google或msdn search一下,很多代码的哈
      

  6.   

    楼主把ip和port在new完后,初始化一下
      

  7.   

    "一样的代码执行几次会出不同结果。"
    看上去可能就是StringBuilder的buffer不够,你new StringBuilder的时候传个数,大一点,足够装下ip,port最长可能值的那种
      

  8.   

    yuanarea(基于遗传基因、面向女朋友的开发方式) 
    out string 怎么用啊![DllImport("myDll.dll")]
    static extern Int32 GameGate(string mydata, out string IP, out string Port);string IP=null;
    string Port=null;
    // 调用  
    int i=GameGate(s,out IP, out Port);/// 这样调用错误啊。 
      

  9.   

    谢谢大家啊,,  StringBuilder的buffer 绝对是够的。
    CharSet 我设置过 没效果哦。