.net Assembly starten



  • Hallo Freunde,

    ich habe einen Beispielcode gefunden, wie man .net-Assemblies aufruft. Es funktioniert leider nur wenn die Main() keine Parameter hat. main(string args[]) würde z.B. nicht funktionieren.

    Das ganze lässt sich folgendermaßen aufrufen:

    CComPtr<_AppDomain> spAppDomain;
    spAppDomain->Load_3(pSA)->EntryPoint->Invoke_3(_variant_t(), NULL);
    

    Ich denke, dass man statt NULL die Parameter "string args[]" übergeben muss. Ich weiß aber leider überhaupt nicht wie das gehen soll. Die Methode verlangt ein SAFEARRAY mit BTSR? 😕

    Wie muss ich diesen Schnippsel abändern, dass ich statt main() auch main(string args[]) aufrufen kann?

    Besten Dank im Voraus für Eure Hilfe!



  • Was verstehst Du denn unter "starten"?
    Was Du hier machst ist nur die Main-Funktion "aufrufen"! Das hat mir starten wenig zu tun.
    Wenn die Funktion ein SAFEARRAY mit BTSR verlangt, dann musst Du das wohl so machen, oder?
    Siehe:
    - SafeArrayCreateVector
    und dann kannst Di den BSTR im Array füllen...



  • Jochen Kalmbach schrieb:

    Was verstehst Du denn unter "starten"?
    Was Du hier machst ist nur die Main-Funktion "aufrufen"! Das hat mir starten wenig zu tun.
    Wenn die Funktion ein SAFEARRAY mit BTSR verlangt, dann musst Du das wohl so machen, oder?
    Siehe:
    - SafeArrayCreateVector
    und dann kannst Di den BSTR im Array füllen...

    Hallo Jochen,

    danke für Deine Hilfe, mir ist schon bewusst, dass ich mit der Funktion die Main-Funkion aufrufe. Ich weiß leider immer noch nicht wie ich aus meinem String ein SAFEARRAY mache. Die MSDN hilft mir mit SafeArrayCreateVector auch nicht weiter. Hast Du vielleicht ein Bespiel für mich?

    Vielen Dank



  • #include <windows.h>
    #include <tchar.h>
    #include <stdio.h>
    
    int _tmain()
    {
      ULONG ulCount = 2;
      SAFEARRAY *sa = SafeArrayCreateVector(VT_BSTR, 0, ulCount);
      BSTR HUGEP *pArray;
      if SUCCEEDED(SafeArrayAccessData(sa, (void HUGEP* FAR*)&pArray))
      {
        pArray[0] = SysAllocString(OLESTR("Hello"));
        pArray[1] = SysAllocString(OLESTR("world"));
      }
      SafeArrayUnaccessData(sa);
    
      // use the SAFEARRAY
    
      SafeArrayDestroy(sa);
    }
    

Anmelden zum Antworten