Expose dll für COM Interop

8

Ich dachte, ich wüsste, wie man das macht, aber offensichtlich nicht so, ich würde etwas Hilfe schätzen! Ich kann meine DLL nicht registrieren, damit ich sie in einem VBS oder anderswo instanziieren kann.

Ich habe die folgende Beispielklasse geschrieben, "Assembly COM sichtbar machen" aktiviert, "Registrierung für COM Interop" aktiviert und dann erstellt. Wenn ich versuche, es von VBS zu instanziieren, erhalte ich den Fehler "ActiveX-Komponente kann Objekt nicht erstellen".

Dies ist der Klassencode:

%Vor%

... und das ist der VBS:

%Vor%

Was muss ich noch tun?

Danke:)

[Bearbeiten]

Vergessen zu erwähnen, dass ich nach dem ersten Fehler REGSVR32 und REGASM ausprobiert habe - keine Hilfe!

[/ edit]

Beachten Sie, dass wenn ich REGSVR32 versuche, bekomme ich diese Nachricht:

Das Modul "C: ... \ Smurf.dll" wurde geladen, aber der Einstiegspunkt DllRegisterServer wurde nicht gefunden. Stellen Sie sicher, dass "C: ... \ Smurf.dll" eine gültige DLL- oder OCX-Datei ist, und versuchen Sie es erneut.

Wie hilfreich ist das?

Dies ist die neueste Version des Codes:

%Vor%     
CompanyDroneFromSector7G 19.07.2012, 22:29
quelle

1 Antwort

10

Hier könnten ein paar verschiedene Dinge im Spiel sein. Zuerst sollten Sie das Tool regasm mit der Option / codebase / tlb an einer Eingabeaufforderung mit erhöhten Rechten verwenden (vorausgesetzt, Windows Vista, 7 oder Windows Server 2008). Etwas wie:

%Vor%

Sobald Sie die dll mit regasm registriert haben, sollte Sie mit VBS, VBA oder VB6 aufrufen können.

Ich konnte frühe Bindung und späte Bindung von VBA verwenden, um die Methode Explode aufzurufen. Jedoch, als ich von VBScript versuchte, erhielt ich das "ActiveX kann Objektfehler nicht verursachen, wie Sie taten."

Ich verwende Windows 7 64 Bit, und ich erinnerte mich, dass dies Probleme beim Kompilieren auf 32-Bit-DLLs und beim Ausführen auf 64-Bit-Betriebssystemen verursachen kann. Aus einer Laune heraus habe ich eine Eingabeaufforderung gestartet und Folgendes eingegeben:

%Vor%

Das Ergebnis war, dass das Skript korrekt ausgeführt wurde und "Pop" auf dem Bildschirm angezeigt wurde.

Hier ist der etwas vereinfachte C # -Code, den ich verwendet habe, sowie der Inhalt der VBScript-Datei.

%Vor%

VBScript:

%Vor%     
Tim Lentine 25.07.2012, 18:10
quelle