Ich sortiere eine native C++ - DLL zu einer C# -DLL. Ich bin in C/C++ nicht sehr anerkannt, aber es ist mir gelungen, es zum Laufen zu bringen, bis ich an diesem Problem festhalte. Hier ist ein sehr einfaches Codebeispiel:C# P/Invoke: nativer Ausgabeparameterwert erreicht den verwalteten Code nicht
C++
PROASADLL __declspec(dllexport) void outTest(int* number){
int temp = *number + 10;
number = &temp; //*number = 12
}
C#
[DllImport("ProAsaNativeDll.dll", CallingConvention = CallingConvention.Cdecl)]
private static extern void outTest(ref int number);
public static int OutTest()
{
int number = 2;
outTest(ref number);
return number; //number = 2
}
Bitte beachten Sie, dass ich mein wirkliches Szenario bin, ich versuche, dies mit einem Zeiger zur Arbeit zu kommen, um Zeiger auf struct, aber ich entschied mich, es wegzulassen, da es kein Marshalling-Problem ist; nicht einmal dieser einfache Code wird funktionieren. Der C++ - Code funktioniert, aber ich würde nicht ausschließen, dumm zu sein und ein Problem dort zu haben: wie ich sagte, ich weiß nicht viel C/C++.
Der Zahlenvariablenwert in der C# -Wrappermethode wird nicht geändert. Bitte helfen Sie.
Es ist schlechter C++ - Code. Das wird nie besser, wenn du es ansteckst. Lass es zuerst von einem C++ Testprogramm funktionieren. –