DLL-Import und Pointer als Parameter
-
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:
//... typedef struct __declspec(dllexport) { char value; } TEST_STRUCT; //... __declspec(dllexport) void Fkt(TEST_STRUCT *pTest_STRUCT);
Und die zugehörige C#-Datei:
//... [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:
TEST_STRUCT t = new TEST_STRUCT(); GCHandle gch = GCHandle.Alloc(t); Fkt(GCHandle.ToIntPtr(gch)); //Hier etwas mit t machen, leider ist t jedoch nach dem Funktionsaufruf immer unverändert... 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
-
Musst du da nicht ref oder out benutzen?