nicht beibehalten Ich habe einen C# -Code, der eine C++ - Funktion aufruft.Array-Änderung in C++ - Funktion wird in C#
Die C++ - Funktion sollte einen Puffer füllen, der mit einem Zeiger übergeben wird. Das Array gibt jedoch leer zurück.
Die Einfuhranmeldung ist:
[DllImport("ProjectLogicInterface", EntryPoint = "FillArr", CallingConvention = CallingConvention.Cdecl)]
public static extern UInt32 FillArr(char[] arr);
Der Code nach Vereinfachungen und sieht so, dass einige hart codierte Werte eingeben:
Der Code in C#:
char[] arr= new char[10];
ret = LogicInterface.FillArr(arr);
Der C++ Code :
bool FillArr(char* arr)
{
int length=10;
for(int i = 0; i < length; i++)
{
arr[i] = 3; //replaced with some hard coded value
}
return true;
}
Das Array bleibt jedoch leer.
Irgendwelche Vorschläge?
Würden die Einweiser dann unter der Haube den Speicherstift? – Nick
Ja. siehe hier: http://msdn.microsoft.com/en-us/magazine/cc163910.aspx#S2 – Pedro