Alle Beispiele, die ich mithilfe von DLLImport finden kann, um C ++ - Code von C # aufzurufen, übergibt Vor-und Zurück. Ich kann diese Beispiele gut funktionieren lassen. Die Methode, die ich brauche, nimmt zwei Strukturen als Importparameter, und mir ist nicht ganz klar, wie ich das schaffen kann.
Hier ist, woran ich arbeiten muss:
Ich besitze den C ++ - Code, damit ich alle notwendigen Änderungen und Ergänzungen vornehmen kann.
Eine Anwendung von Drittanbietern wird meine DLL beim Start laden und erwartet, dass der DLLExport auf eine bestimmte Weise definiert wird, so dass ich die Methodensignatur, die exportiert wird, nicht wirklich ändern kann.
Die C # -App, die ich erstelle, wird als Wrapper verwendet, damit ich dieses C ++ - Stück in einige unserer anderen Anwendungen integrieren kann, die alle in C # geschrieben sind.
Die C ++ - Methodensignatur, die ich aufrufen muss, sieht so aus
%Vor%Und MathInputStructType ist wie folgt definiert
%Vor%Das MSDN-Thema Passing Structures enthält eine gute Einführung zum Übergeben von Strukturen an nicht verwalteten Code. Sie sollten auch Marshaling von Daten mit Platform Invoke überprüfen und Marshaling Arrays von Typen .