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?
Type error: Components.classes[cid] has no properties
-
TheRave -
14. Oktober 2007 um 21:19 -
Erledigt
-
-
Benutzt du ein Gecko-SDK? Wenn ja welches?
Immer interessant: http://developer.mozilla.org/en/docs/XPCOM_Glue
-
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.
-
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.DLLZumindest 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....
-
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.DLLZumindest 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.
-
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.
-
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.
-
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.
-
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.