修改传递给 C dll c# 的字符数组



我只是试图将缓冲区从 C# 传递给 C dll,让 C 函数填充缓冲区,然后在 C# 代码中对缓冲区执行一些操作。 但是我把垃圾弄回了缓冲区。这是 C:

    extern "C" __declspec( dllexport )      
    int  cFunction(char *plotInfo, int bufferSize) 
    {
        strcpy(plotInfo, "text");
        return(0);
    }

C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
namespace ConsoleApplication1
{
class Program
{
 [DllImport("mcDll.dll",
     CallingConvention = CallingConvention.Cdecl, CharSet=CharSet.Unicode)]
    public static extern int cFunction( StringBuilder theString, int bufferSize);
    static void Main(string[] args)
    {
        StringBuilder s = new StringBuilder(55);
        int result = cFunction( s, 55);
        Console.WriteLine(s);
    }
   }
}

本机函数使用 ANSI 字符进行操作。只需从导入定义中删除CharSet.Unicode即可。

相关内容

  • 没有找到相关文章

最新更新