Laden...

DLL in VBScript aufrufen - Fehler: ActiveX-Komponenten kann kein Objekt erstellen

Erstellt von Jacyrio vor 7 Jahren Letzter Beitrag vor 7 Jahren 4.001 Views
J
Jacyrio Themenstarter:in
197 Beiträge seit 2006
vor 7 Jahren
DLL in VBScript aufrufen - Fehler: ActiveX-Komponenten kann kein Objekt erstellen

Hey,

vielleicht hat von euch noch irgendjemand eine passende Idee. Ich würde gerne aus einem VBScript eine in C# erstellte DLL aufrufen und es funktioniert nicht! Ich habe mir tutorials im Internet angeschaut und diese genau nachgebaut ... nichts zu machen. Ich bekomme immer folgende Fehlermeldung:

ActiveX-Komponenten kann kein Objekt erstellen: 'MyTestDLL.Ops'

Mit dem Fehlercode: 800A01AD und QUelle: LAufzeitfehler in Microsoft VBScript

Hier ist mein Testcode der DLL.. aufs kleinste "reduziert":


using System.Runtime.InteropServices;

namespace MyTestDLL
{
    [ComVisible(true)]
    public class Ops
    {
        [ComVisible(true)]
        public string TestFunc()
        {
            return "Yeah!";
        }
    }
}

Und hier mein VBScript:


Dim obj
Set obj = CreateObject("MyTestDLL.Ops")
MsgBox obj.TestFunc

Besondere Einstellungen der DLL:
*Framework 4.5.2 *Für COM-Interop registeren

Ich habs schon folgende Dinge probiert:*Signierung der Assembly -> GAC *Registeren der DLL unter X86 und nicht AnyCPU

Interessanterweise: Wenn ich genau den selben VBScript-Code in eine VBA-Funktion (z. B. mit Excel) ausprobiere, funktioniert der Aufruf. Es scheint also irgendwie an der Kombination mit VBScript zu liegen.

Hat noch jemand eine Idee wo der Fehler sein kann? Bräuchte das ganz dringend... möchte ungerne einen riesigen Code in VBScript schreiben und würde gerne auf eine DLL ausweichen und nur noch die DLL aufrufen 😦

Vielen Dank!

16.806 Beiträge seit 2008
vor 7 Jahren

Auch drauf geachtet, dass Du entsprechend x86 bzw x64 zum registrieren verwendet hast?
Das ist bei COM wichtig und dafür gibts zwei verschiedene Regasm.exe-Anwendungen.

Auch die Ausführung, ob im Context von x86 oder x64 ist relevant.
Nur dafür kompilieren reicht nicht.