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

Matlab COM Automation C++ Schnittstelle

 

TinTin82
Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 07.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 04.09.2017, 16:40     Titel: Matlab COM Automation C++ Schnittstelle
  Antworten mit Zitat      
Hi,

ich habe ein COM dll erstellt, welche ich mit
Code:

h = actxserver('CoClassDll.CoClass2')
 

erfolgreich laden kann.
Der Aufruf meiner Funktion funktioniert,
Code:

h.Execute1()
 

aber leider bekomme ich als Rückgabewert:
Zitat:

>> h.Execute1()

ans =

-1

zurück.

Die Schnittstelle habe ich in C++ wie Folgt definiert.
Code:

DECLARE_INTERFACE_(IInterface1,IDispatch)
{
        /// IDispatch Interface
    STDMETHOD_(HRESULT,Execute1)(void) PURE;
};
 


Die Funktion macht aktuell nicht viel, außer eine Messagebox zu erzeugen und alles Gut zurück zu melden.

Code:

HRESULT __stdcall CoClass::Execute1(void)
{

    std::cout <<"\n IDispatch CoClass::Execute1(void) executed. this:" <<this;
    MessageBoxA ( NULL, "CoClass::Execute1", "Test", MB_OK );

    return S_OK;
}
 


Muss ich mich an Mex oder irgendwelche Matlabvorgaben halten beim Erzeugen von
COM Interfaces, welche ich in Matlab verwenden möchte ??

Viele Grüße,
TinTin
Private Nachricht senden Benutzer-Profile anzeigen


TinTin82
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 15
Anmeldedatum: 07.05.17
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 05.09.2017, 16:25     Titel:
  Antworten mit Zitat      
Okay, ich habe den Fehler gefunden.

Matlab kann wohl mit dem Typen VT_HRESULT in der TypeLib nichts anfangen:
Code:

FuncDesc.elemdescFunc.tdesc.vt = VT_HRESULT ;
 


Die Konvertierung für VT_UI4 ist jedoch in der Matlabdokumentation vermerkt:
https://de.mathworks.com/help/matla.....a-in-matlab-software.html

Code:

FuncDesc.elemdescFunc.tdesc.vt = VT_UI4;
 


Code:

DECLARE_INTERFACE_(IInterface1,IDispatch)
{
        /// IDispatch Interface
    STDMETHOD_(uint32_t,Execute1)(void) PURE;

};
 


Code:

uint32_t __stdcall CoClass::Execute1(void)
{...}
 


Mit den Änderungen bekomme ich den richtigen Rückgabewert.

=> Ergo matlab unterstützt keine Konvertierung für COM Objekte für VT_HRESULT

Gruss,
TinTin
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 - 2025 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.