关于C#调用C++ dll传参的问题

txwdyyy001 2010-12-09 06:23:59
C++ DLL中
int Parse(char* Path,char *PassWord)
{
}
C#中调用
[DllImport("abc.dll")]
static extern int Parse(string path, string password);

在C#里调用Parse,password这个参数传过来总是不对,解密的时候会报错。但是直接在C++dll的方法里给
PassWord赋值PassWord=“3232323”;这样就没有问题。可是为什么传进来的参数就不对呢?

我用MessageBox显示这个password显示也没有问题啊。莫非是因为C#的string结尾没有'/0'?
但是我用C++理由sizeof(PassWord)得到的值总是4,那位高人遇到过这种问题啊?给点思路
...全文
99 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
txwdyyy001 2010-12-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 blue601 的回复:]
c#与c++的字符串转换有问题,一个是末尾/0,还有是占用字节
还是用byte数组传入吧
[/Quote]
并不是因为这个!
NIL_ZJW 2010-12-13
  • 打赏
  • 举报
回复
c#与c++的字符串转换有问题,一个是末尾/0,还有是占用字节
还是用byte数组传入吧
同意
blue601 2010-12-13
  • 打赏
  • 举报
回复
c#与c++的字符串转换有问题,一个是末尾/0,还有是占用字节
还是用byte数组传入吧
txwdyyy001 2010-12-13
  • 打赏
  • 举报
回复
刚才试了一下,在C#里把string 用asic转成byte[] 传入参数就没问题了。
txwdyyy001 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 chxy85 的回复:]
用char[],别用指针,用标准数据类型就可以传参了,我用过
[/Quote]
C++ DLL中
int Parse(char Path[],char PassWord[])
{
}
改成这样么?这种我试过的,不行啊
chxy85 2010-12-10
  • 打赏
  • 举报
回复
用char[],别用指针,用标准数据类型就可以传参了,我用过
txwdyyy001 2010-12-10
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 roc196 的回复:]

C#中的string是unicode,你C++代码中写的char,这就不行啦~~~
[/Quote]
那应该如何处理呢?
88csdn 2010-12-10
  • 打赏
  • 举报
回复
C#中的string是unicode,你C++代码中写的char,这就不行啦~~~
lvlin1980 2010-12-09
  • 打赏
  • 举报
回复
c#中的string不能和c++中的char* 直接赋值。 int的话没问题,特殊类型要特殊处理下。
GERRARD__8 2010-12-09
  • 打赏
  • 举报
回复
期待高手来解决 嘿嘿

7,655

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧