我正在导入一个带有定义
的函数 __declspec(dllexport) int __stdcall karacell_bridge(
int argumentCount, char *argContent[])
从C DLL到MS Visual Studio C#项目。如何在C#中重新定义参数char * argContent []?
我可以使用MarshalAs
吗?或者在C#中将其定义为public static extern int karacell_bridge( int argumentCount, string[] argContent)
是正确的吗?
答案 0 :(得分:0)
这应该有效:
public unsafe static int karacell_bridge_wrapper(string[] input)
{
char*[] argContent = new char*[input.Length];
for(int i = 0; i < input.Length; i++)
{
char* str;
fixed (char* cptr = input[i])
{
str = (char*)cptr;
}
argContent[i] = str;
}
return karacell_bridge(input.Length, argContent);
}
请记住在C#项目中允许使用不安全的代码(右键单击&gt;属性 - &gt;构建 - &gt;允许不安全的代码)