C#调用C++的dll,C#中的类型为string[],C++中的类型为char**,怎样把C#中的string[]传到C++中的char**?

C#:[DllImport("CalIsolatedSpan.dll",CallingConvention=CallingConvention.Cdecl)]public... C#:

[DllImport("CalIsolatedSpan.dll", CallingConvention = CallingConvention.Cdecl)]
public extern static void CalIsolatedSpan(string isoSpan, string guideWire, string splitNumber, string[] arrMetDetail, int nCount, out string result);

C++:

extern "C"
{
__declspec(dllexport)
void CalIsolatedSpan(char* guideWire , char* splitNumber , char* isoSpan , char* metDetail[] , int nCount , char*& result);
};

代码应该怎么调整
展开
 我来答
空雪梦见
推荐于2016-09-07 · TA获得超过5597个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1196万
展开全部
1、你的参数顺序两边没有对应
2、char*应该在DllImport里面加上CharSet=CharSet.ANSI
3、最后输出我不确定你这样行不行,我觉得应该是 out IntPtr result,然后之后再用其他办法从IntPtr转到Byte[]再转到string(IntPtr能不能直接到string我不确定)
4、char* []这种类型,C#中新建一个IntPtr[]然后分别把每个字符串搞成IntPtr再传过去可行。有没有更简便的方法不知道。string可以先到Byte[]然后再申请一块内存IntPtr然后从Byte[]拷过去。
5、C#中从string转到byte[]的时候,最后是不带结尾的0的,这个要注意自己加上去不然C++那边要Crash
6、你那个result是怎么申请内存的,然后最后打算怎么在C#里释放啊……囧
匿名用户
2014-11-27
展开全部
String对应C艹中BSTR,类型都不对怎么传?
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
winxpliyou
2014-11-27 · 超过65用户采纳过TA的回答
知道小有建树答主
回答量:267
采纳率:0%
帮助的人:158万
展开全部
char**类型就相当于char*[]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式