C++方法原型WRAPER_API int Save(char* pId, char* pBuffer)
C#调用[DllImport("Wraper.dll", EntryPoint = "Save", CharSet = CharSet.Auto)]
public static extern int _Save(StringBuilder pId, StringBuilder pBuffer);StringBuilder sbId = new StringBuilder("1002");
StringBuilder sbBuffer = new StringBuilder("abcdefgaaaaaaaaaaaaaaaaaaaaa");
int bb = _Save(sbId , sbBuffer);
调试C++动态库的时候, 发现接收到的这两个参数都只有前面第1位, 不知道应该怎样弄才好使呢? ( C++ 方法接口不能够更改)

解决方案 »

  1.   

    我用的STring都可以了  
      

  2.   

    [DllImport("Wraper.dll", EntryPoint = "Save", CharSet = CharSet.Auto)]
    public static extern int _Save(StringBuilder pId, StringBuilder pBuffer);这个参数的类型应该是String吧,没见过用StringBuilder的。
      

  3.   


    我以前调用过delphi写的dll,用string不行,后来也是用StringBuilder解决的.
    但是楼主的问题我也不知道
      

  4.   

    StringBuilder和string都可以,
    CharSet问题吧,从unicode转为ansi,如果直接作为指针的话,不就是1个字符么?
      

  5.   


     public static extern int Save(String pId,String pBuffer);
      

  6.   


    确实是 , 去掉CharSet就可以了.