0

我正在导入具有定义的函数

 __declspec(dllexport) int __stdcall karacell_bridge( 
               int argumentCount, char *argContent[]) 

从 C DLL 到 MS Visual Studio C# 项目。如何在 C# 中重新定义参数 char *argContent[]?

我可以使用MarshalAs吗?public static extern int karacell_bridge( int argumentCount, string[] argContent)或者在 C#中定义它是否正确?

4

1 回答 1

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# 项目中允许不安全代码(右键单击 -> 属性 -> 构建 -> 允许不安全代码)

于 2012-08-08T14:47:34.173 回答