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++ 方法接口不能够更改)
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++ 方法接口不能够更改)
public static extern int _Save(StringBuilder pId, StringBuilder pBuffer);这个参数的类型应该是String吧,没见过用StringBuilder的。
我以前调用过delphi写的dll,用string不行,后来也是用StringBuilder解决的.
但是楼主的问题我也不知道
CharSet问题吧,从unicode转为ansi,如果直接作为指针的话,不就是1个字符么?
public static extern int Save(String pId,String pBuffer);
确实是 , 去掉CharSet就可以了.