栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

将字符串从C#传递到C ++ DLL并返回-最小的例子

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

将字符串从C#传递到C ++ DLL并返回-最小的例子

您不能

std::string
跨互操作边界传递C ++ 。您不能在C#代码中创建其中之一。因此,您的代码将永远无法工作。

您需要在互操作边界使用互操作友好类型。例如,以null终止的字符数组。当您在同一模块中分配和取消分配内存时,这种方法效果很好。因此,将数据从C#传递到C
++时非常简单。

C ++

void foo(const char *str){    // do something with str}

C#

[Dllimport("...", CallingConvention = CallingConvention.Cdecl)static extern void foo(string str);....foo("bar");

在另一个方向上,您通常希望调用方分配缓冲区,被调用方可以在其中写入以下内容:

C ++

void foo(char *str, int len){    // write no more than len characters into str}

C#

[Dllimport("...", CallingConvention = CallingConvention.Cdecl)static extern void foo(StringBuilder str, int len);....StringBuilder sb = new StringBuilder(10);foo(sb, sb.Capacity);


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/483974.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号