2 u 571 2 u_571_2 于 2014.01.25 13:06 提问

c++dll中的char*形参如何通过CLR程序传递给C#?

工程3层结构,底层是c++的dll,接口如下:
CPPDLL_API int fnCppDll(char* p)
{
for (int i = 0;i < 10;i++)
{
*p++ = '0' + i;
}
return 1;
}
中间层是CLR的dll,接口如下:
int MgdDll::Class1::getStr(String^ str)
{
interior_ptr p = const_cast>(PtrToStringChars(str));

fnCppDll(p);
return 0;
}

上层是C# From调用,string str;int rc = 1;rc = cs1.getStr(str);MessageBox.Show(str);

CLR中间层编译错误:MgdDll.cpp(17): error C2664: “fnCppDll”: 不能将参数 1 从“cli::interior_ptr”转换为“char *” 无法将托管类型转换为非托管类型。

请问如何把C#层的str传递到c++层并返回修改后的串?不用说用DllImport直接导入c++的dll,架构设计需要使用3层结构。谢谢

1个回答

weigshi
weigshi   2014.01.25 23:05

char * 在.net 中就是字节数组 byte[]

u_571_2
u_571_2 我说的是通过托管c++调用,不是.net程序直接调用
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!