Laden...

Forenbeiträge von scandal0uz Ingesamt 5 Beiträge

14.07.2005 - 14:20 Uhr

Hat sich erledigt. Funktioniert mit einem ganz normalen Pointer.

14.07.2005 - 11:01 Uhr

Ups, hab ich wohl aus Versehen ins falsche Forum gepostet. Bitte verschieben

14.07.2005 - 10:57 Uhr

Hi Leute, habe da ein kleines Problemchen, bei dem ihr mir vielleicht helfen könnt.

Ich benutze aus einer C# Applikation eine C++ dll.
Die Funktion die ich dort aufrufe benötigt als Übergabeparameter einen Zeiger auf eine Referenz eines Integer Arrays.

Die C++ Funktion sieht ungefähr so aus:

EXTERN_C BOOL STDAPICALLTYPE MyFunction(int& count, int*& indices);

Jetzt die Frage, wie ich sowas in C# umsetze. Ich möchte ein Integer Array anlegen und irgendwie dieses Pointer-Referenz-Ding übergeben. Die dll füllt mir dieses mit werten. Dabei besitzt die Variable count hinterher die Größe des Int-Arrays.

Der C# DLL-Aufruf:


[DllImport("MyLib.dll")]
private static extern bool MyFunction(out Int32 count, out int* indices);

Die Implementierung


int count = 0;
int[] test = null;
fixed(int *ptrI = test)
MyFunction(out count, out ptrI);

Also die Variable count hat dann hinterher jedenfalls die Größe des Arrays, aber wie funktioniert das mit dem Int-array??

14.07.2005 - 10:38 Uhr

Wenn du es in einer .Net Sprache geschrieben hast, sollte natürlich das .Net Framework auf seinem Rechner installiert sein.

Außerdem, wenn du es im Managed Code programmiert hast kann es sein, daß du noch nach der DirectX installation die Erweiterung für Managed Code installieren mußt.
Dazu gibt es im SDK von DirectX eine Datei mdxredist.msi.