Hallo,
ich habe eine DLL in C geschrieben, welche eine Funktion Fkt besitzt und als Übergabeparameter einen Pointer auf TEST_STRUCT erhält und dann Inhalte dieser Struktur ändert...
Hier die C-Datei:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| typedef struct __declspec(dllexport) { char value; } TEST_STRUCT; __declspec(dllexport) void Fkt(TEST_STRUCT *pTest_STRUCT); |
Und die zugehörige C#-Datei:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10:
| [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Ansi)] public struct TEST_STRUCT { public byte value; } [DllImport("test.dll")] public static extern void Fkt(IntPtr pTest_STRUCT); |
Und der Aufruf der Methode:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7:
| TEST_STRUCT t = new TEST_STRUCT(); GCHandle gch = GCHandle.Alloc(t); Fkt(GCHandle.ToIntPtr(gch));
gch.Free(); |
Was mache ich falsch, bzw. was muss ich machen, damit ich in C# eine Funktion aus einer C-DLL mit Pointer als Parameter aufrufen kann?
Ich bin für jeden Tipp dankbar!
Viele Grüße
David