字符 * str[] 在 C# 中等效

本文关键字:str 字符 | 更新日期: 2024-10-31 15:23:46

我正在导入一个带有定义的函数

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

字符 * str[] 在 C# 中等效

这应该有效:

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