C++ / CLI COM Objekt

OP #6181069
Hallo Leute,

ich stehe voll aufm schlauch.

ich habe mir ein CLI Projekt.
Nun möchte ich aus einem IDispatch Pointer, das ComObject übertragen.
1
  void EventHandler::fireCreateInstance(std::string status, LPDISPATCH params)
2
  {
3
    EventHandlerWrapper^ eventHandlerWrapper = gcnew EventHandlerWrapper();
4
    eventHandlerWrapper->fireCreateInstance(status, (InteropComObject^)params);
5
  }
6

7
  void EventHandlerWrapper::fireCreateInstance(std::string status, InteropComObject^ params)
8
  {
9
    Buddy::Instance->MEventGuardian_CreateInstance(gcnew String(status.c_str()), params);
10
  }

ich hab mir so was gebaut, der EventHandler::fireCreateInstance wird via 
declspec exportiert. und der EventHandlerWrapper::fireCreateInstance hat 
die kennung __clrcall weil man dies anscheinend nicht kompinieren darf.

nun hab ich das Problem das ich das LPDISPATCH nicht in das 
InteropComObject bekomme. Was muss ich hier tun, ich sitze da zeit 
wochen dran und komme nicht voran.
OP #6181108
Hab die Lösung gefunden
1
  void EventHandler::fireCreateInstance(std::string status, LPDISPATCH params)
2
  {
3
    EventHandlerWrapper^ eventHandlerWrapper = gcnew EventHandlerWrapper();
4
    
5
    Object^ cSetup = Marshal::GetObjectForIUnknown(IntPtr(params));
6
    eventHandlerWrapper->fireCreateInstance(status, cSetup);
7
  }
8

9
  void EventHandlerWrapper::fireCreateInstance(std::string status, Object^ params)
10
  {
11
    Buddy::Instance->MEventGuardian_CreateInstance(gcnew String(status.c_str()), params);
12
  }

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 6 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.