Char array fra C# til C
HejJeg har et problem med at sende et char array fra C# til min C kode.
Min C kode ser sådan her ud:
#include <string.h>
int CTest(char *text) {
return strlen(text);
}
Jeg har prøver at inkludere den på 2 måder i C#.
Første måde:
[DllImport("../../CTest.dll", SetLastError = true, CharSet = CharSet.Ansi)]
static private extern unsafe int CTest(char *text);
static void Main(string[] args)
{
char[] a = "Test".ToCharArray();
int result = -1;
unsafe
{
fixed (char* t = a)
result = CTest(t);
}
Console.WriteLine("Result: {0}", result);
Console.ReadKey();
}
Anden måde:
[DllImport("../../CTest.dll", SetLastError = true, CharSet = CharSet.Ansi)]
static private extern unsafe int CTest(IntPtr text);
static void Main(string[] args)
{
char[] a = "Test".ToCharArray();
int result = -1;
IntPtr pointer = Marshal.AllocHGlobal(Marshal.SizeOf(new System.Char()) * (a.Length));
Marshal.Copy(a, 0, pointer, a.Length);
result = CTest(pointer);
Console.WriteLine("Result: {0}", result);
Console.ReadKey();
}
Lige meget hvor lang en tekst jeg skriver i variablen a, så returnere min C kode altid 1. Det er som om den ikke kan se at det et array.
Hvad gør jeg galt?
Hilsen Glen