工程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层结构。谢谢
char * 在.net 中就是字节数组 byte[]