C# string 转char*

Greg_han 2012-02-16 11:56:19
我在C#中使用了C++生成的dll,由于dll的原型函数参数 是char*,所以导致C#中的 string变量传递有误(编译正确,输出结果有误),请问怎么办?代码如下:
//C++ dll源码:
...
EXPORT void _stdcall setFeature(char* _feature);
...

//C#调用 源码:
[DllImport("LicenseDll.dll", CharSet = CharSet.Ansi)]//C#调用C++ dll的指令
static extern int setFeature(string feature);
// static extern int setFeature(char* feature);

static void Main(string[] args)
{
......
string kk = "f2";
setFeature(kk);//编译正确,结果有误
setFeature("f2");//);//编译 结果都正确
......
}
...全文
480 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Greg_han 2012-02-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 tan598121925 的回复:]
setFeature(kk.ToCharArray());
[/Quote]

谢谢!
当然还要改这个:
static extern int setFeature(char[] feature);

EnForGrass 2012-02-16
  • 打赏
  • 举报
回复
setFeature(kkToString());
tan598121925 2012-02-16
  • 打赏
  • 举报
回复
setFeature(kk.ToCharArray());
qldsrx 2012-02-16
  • 打赏
  • 举报
回复
用StringBuilder试试,C++中的char*是可变长的字符串,因此到C#里就只能用StringBuilder来对应,是否要家ref,看情况,这里估计不需要。
[DllImport("LicenseDll.dll", CharSet = CharSet.Ansi)]//C#调用C++ dll的指令
static extern int setFeature(StringBuilder feature);
vkv123 2012-02-16
  • 打赏
  • 举报
回复
转这个有什么用?
chengdong284 2012-02-16
  • 打赏
  • 举报
回复
使用 out 或是 ref 参数 试试

110,568

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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