char * str []相当于C#

时间:2012-08-08 03:04:19

标签: c# c dll dllimport

我正在导入一个带有定义

的函数
 __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)是正确的吗?

1 个答案:

答案 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;允许不安全的代码)