Laden...
S
scandal0uz
myCSharp.de - Member
1
Themen
5
Beiträge
Letzte Aktivität
vor 18 Jahren
Dabei seit
14.07.2005
Erstellt vor 19 Jahren

Hat sich erledigt. Funktioniert mit einem ganz normalen Pointer.

Erstellt vor 19 Jahren

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

Erstellt vor 19 Jahren

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??

Erstellt vor 19 Jahren

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.