Type error: Components.classes[cid] has no properties

  • Ich hab da so eine Erweiterung geschrieben die mit Hilfe eines Sliders den Master Volume Regler betut. Soweit funktioniert das auch, allerdings nur auf dem Rechner auf dem die XPCOM dll compiliert wurde. Sonst gibts den Fehler Type error: Components.classes[cid] has no properties. Auf meinem Zweitrechner war das nur zum laufen zu bekommen, nachdem ich die dll dort neu compiliert habe. Und wie zu erwarten läuft es auf dem dritten Rechner auch nicht auf Anhieb. Hat jemand hier sowas schon mal gehabt?



    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:132.0) Gecko/20100101 Firefox/132.0

  • Ja, die Gecko SDK 1.8.0.4 ist mit an Bord.

    In meinem Projectfile steht, das: AdditionalDependencies="nspr4.lib xpcom.lib xpcomglue_s.lib"

    Das sollte eigentlich stimmen. Nach der Seite oben soll für Extensions ein depend glue erzeugt werden.



    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:132.0) Gecko/20100101 Firefox/132.0

  • Zitat von TheRave

    Ja, die Gecko SDK 1.8.0.4 ist mit an Bord.

    In meinem Projectfile steht, das: AdditionalDependencies="nspr4.lib xpcom.lib xpcomglue_s.lib"

    Das sollte eigentlich stimmen. Nach der Seite oben soll für Extensions ein depend glue erzeugt werden.

    Probier doch mal ftp://ftp.mozilla.org/pub/mozilla.or…1.3/contrib/sdk

    Ist dann zwar nur Fx2-kompatibel, aber testen kann ja nicht schaden.
    Irgendwann hatte ich das Problem auch mal, weiß aber nicht mehr,
    woran es lag. Ich meine am Linken, bin mir aber nicht sicher.

  • Ich bin gerade mit dem Dependency Walker auf der Maschine unterwegs auf der es nicht läuft und hab den mal meine erstellte dll losgelassen.

    Es sieht so aus als ob folgende dll nicht geladen wird weil sie nicht da ist:

    MSVCR80.DLL

    Nur in den Mozilla Ordnern, werden aber nicht geladen:
    NSPR4.DLL
    XPCOM.DLL

    Zumindest für die letzten beiden dlls kann es daran liegen daß Sie nicht systemweit registriert sind, weil die werden auf der Maschine auf der es funktioniert vom Dependency Walker auch nicht gefunden, aber die MSVCR80.dll fehlt definitiv.

    Die dll sollte in einem Ordner Winsxs liegen. Hab gerade versucht den zu kopieren und die dll manuell mit regsvr32 zu registrieren. Aber das gibt nur den Fehler R6034 - wegen dem Manifest....



    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:132.0) Gecko/20100101 Firefox/132.0

    Einmal editiert, zuletzt von TheRave (15. Oktober 2007 um 15:10)

  • Zitat von TheRave

    Ich bin gerade mit dem Dependency Walker auf der Maschine unterwegs auf der es nicht läuft und hab den mal meine erstellte dll losgelassen.

    Es sieht so aus als ob folgende dll nicht geladen wird weil sie nicht da ist:

    MSVCR80.DLL

    Nur in den Mozilla Ordnern, werden aber nicht geladen:
    NSPR4.DLL
    XPCOM.DLL

    Zumindest für die letzten beiden dlls kann es daran liegen daß Sie nicht systemweit registriert sind, weil die werden auf der Maschine auf der es funktioniert vom Dependency Walker auch nicht gefunden, aber die MSVCR80.dll fehlt definitiv.


    Dann hast du doch schon die Antwort. Fehler == EndeBanane.
    Muss es unbedingt MSVCR80 sein?

  • Ich weiß jedenfalls im Moment nicht warum die dabei ist. In meinem Projectfile steht die nicht. Vielleicht ne Standardeinstellung muß ich mal kucken.



    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:132.0) Gecko/20100101 Firefox/132.0

  • So, die dll wird man bei VS2005 nicht los. Aber es gibt ein VC2005 Redistributable Package das die ganzen dlls installiert. Das Problem ist nur, daß es immer noch nicht das eigentliche cid Problem löst. Ich vermute eigentlich auch eine Linker Option.



    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:132.0) Gecko/20100101 Firefox/132.0

  • So jetzt läuft es. Ich hab jetzt die compreg.dat nochmal gelöscht.

    Also VS2005 restribute files + compreg.dat neu war die Lösung.

    Die Inspektion der alten compreg.dat ergab, daß die dll für meine installierte Erweiterung überhaupt nicht registriert war und dort gar nicht auftauchte. Schon für die Registrierung in der compreg.dat müssen also die Depends aufgelöst werden können.



    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:132.0) Gecko/20100101 Firefox/132.0

  • Zitat von TheRave

    So jetzt läuft es. Ich hab jetzt die compreg.dat nochmal gelöscht.

    Also VS2005 restribute files + compreg.dat neu war die Lösung.

    Die Inspektion der alten compreg.dat ergab, daß die dll für meine installierte Erweiterung überhaupt nicht registriert war und dort gar nicht auftauchte. Schon für die Registrierung in der compreg.dat müssen also die Depends aufgelöst werden können.


    Ist das auch bei einer Neuinsatllation der Erweiterung lauffähig?

  • Jetzt wo die VC2005 dlls installiert sind sollte auch eine Neuinstallation kein Problem sein. Werde das morgen nochmal testen. Irgendwie finde ich das trotzdem doof, daß eine dll die man gar nicht braucht soviel Ärger macht und noch dazu selbst bei XP+SP2 nicht standardmäßig dabei ist. Mich würde trotzdem noch interessieren ob man VS2005 noch irgendwie überreden kann diese msvcr80 loszuwerden. Hab dazu noch nichts gefunden.



    Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:132.0) Gecko/20100101 Firefox/132.0

  • Du kannst die msvcr statisch einkompilieren indem du in den Projekteigenschaften unter "Konfigurationseigenschaften > C/C++ > Codegenerierung" von "Multithreaded-DLL" auf "Multithreaded" umstellst. Dann wird die Bibliothek statisch in deine dll eingebunden und muss nicht separat gefunden werden.