WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Compiler -Implement. 1er Library in C#-returnValue mögl.?

 

NoRiskNoFun
Forum-Newbie

Forum-Newbie


Beiträge: 1
Anmeldedatum: 21.10.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.10.2010, 09:07     Titel: Compiler -Implement. 1er Library in C#-returnValue mögl.?
  Antworten mit Zitat      
Hi Leute!

Ich hätte da mal so ne Frage. Und zwar will ich eine Matlab-DLL in C# einbinden, um mit C# einer passende Benutzeroberfläche zu kreieren. Nach langem Suchen und Finden bin ich auf die folgende Methode gekommen, um die von Matlab kompilierte DLL in C# einzubinden:

Code:
[DllImport("cshared.dll")]
            private static extern void mlfMath_on_numbers([In]Int32 nargout, ref IntPtr c, ref IntPtr d, [In]IntPtr a, [In]IntPtr b);

            [DllImport("cshared.dll")]
            private static extern void csharedInitialize();

            [DllImport("cshared.dll")]
            private static extern void csharedTerminate();

            [DllImport("mclmcrrt711.dll")]
            private static extern IntPtr mxCreateDoubleMatrix_730_proxy([In]Int32 numRows, [In]Int32 numCols, [In]Int32 mxComplexity);
            /*
             * typedef enum {
             *     mxREAL,
             *     mxCOMPLEX
             * } mxComplexity;
             */

            [DllImport("mclmcrrt711.dll")]
            private static extern IntPtr mxGetPr_proxy([In] IntPtr mxArray);

            [DllImport("mclmcrrt711.dll")]
            private static extern IntPtr mxGetPi_proxy([In] IntPtr mxArray);

            [DllImport("mclmcrrt711.dll")]
            private static extern void mxDestroyArray_proxy([In] IntPtr mxArray);

            [DllImport("mclmcrrt711.dll")]
            private static extern bool mclInitializeApplication_proxy(string options, Int32 count);

            [DllImport("mclmcrrt711.dll")]
            private static extern void mclTerminateApplication_proxy();

            public void DoTheWork(Array ar, Array ai, Array br, Array bi,
                ref Array cr, ref Array ci, ref Array dr, ref Array di)


Dies ist nur ein Beispiel, auf welches ich mich berufen habe. Aber natürlich nicht meine exakte Implementation in meinem Projekt. Jedenfals funktioniert diese Methode bei mir und ich kann in den unmanaged Speicher einen Matritzenpointer setzetn, auf welchen die Matlab-DLL und meine Benutzeroberfläche Zugriff haben

Zu beachten ist, dass die Matlab-Funktion, welche ich von der DLL implementiere, keinen Wert zurückgibt:


[DllImport("cshared.dll")]
private static extern void mlfMath_on_numbers([In]Int32 nargout, ref IntPtr c, ref IntPtr d, [In]IntPtr a, [In]IntPtr b);


Da ich eine StandardSchnittestelle zu Matlab-libraries entwickeln will, wäre es für mich von Vorteil, wenn diese Funktion einen von der Matlab -Funtkion bestimmten Integer-Wert zurückgibt. Meine Frage wäre jetzt, ob des möglich ist??

Das ganze müsste dann in etwa so aussehen:

Code:
[DllImport("cshared.dll")]
            private static extern Int32 mlfMath_on_numbers([In]Int32 nargout, ref IntPtr c, ref IntPtr d, [In]IntPtr a, [In]IntPtr b);


Danke für die Hilfe Smile
Private Nachricht senden Benutzer-Profile anzeigen


Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum posten
Du kannst Dateien in diesem Forum herunterladen
.





 Impressum  | Nutzungsbedingungen  | Datenschutz | FAQ | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks

MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.