CoCreateInstance failed / COM-Services

Hallo,

Ich möchte gleich darauf hinweisen, dass ich mit C++ nicht so bewandert bin wie es vielleicht sein sollte. Ich muss eigentlich „nur“ eine in C++ geschriebene Applikation aufsetzen. Doch bereits dies (bzw. die kleinen Test-Dateien, die das ganze nur antesten sollen) bereitet mir riesige Probleme.
Es handelt sich dabei um einen Windows-Service und einen Client, der eben diesen Service ansprechen können muss. Der Service ist meines Erachtens korrekt installiert - jedenfalls so weit ich das beurteilen kann. Die Registry-Einträge sind allesamt vorhanden und der Dienst läuft, steht auch in der Dienste-Übersicht in der Systemsteuerung, lässt sich starten und beenden wie man will.

Nun wenn ich den Client kompiliere und dann starte, passiert erst (ich habe die Zeit gestoppt) 28 Sekunden gar nichts (auch die Eröffnungszeile des Clients, dieses „This is the Test Client“ erscheint noch nicht), und dann bekomme ich die Eröffnungszeile und die im Code stehende Fehlermeldung. Hier der Teil des Codes, der hierfür relevant ist

#include 
#include 
#include 
#include 
#include 
#include 
//#include 
#include "..\..\service\TestService\TestService.h"
#include 

#define TRUE 1
#define FALSE 0

double calculateGamma(double);


int main(int argc, char\*\* argv)
{
 cout
Die extrem lange Wartezeit macht mich stutzig. Stimmt da an der Installation des Services immer noch etwas nicht, oder was sonst kann es denn noch sein, dass dieses CoCreateInstance nicht funktioniert?

Ich arbeite mit Windows XP (SP2) und Visual Studio 6. Was sonst noch wichtig ist vermag ich mit meinen nicht grad tollen C++-Kenntnissen nicht zu beurteilen. Ich wäre wirklich dankbar, wenn mir jemand helfen könnte. Danke

MfG,
 Kerstin

Auch hallo.

Es handelt sich dabei um einen Windows-Service und einen
Client, der eben diesen Service ansprechen können muss. Der
Service ist meines Erachtens korrekt installiert - jedenfalls
so weit ich das beurteilen kann. Die Registry-Einträge sind
allesamt vorhanden und der Dienst läuft, steht auch in der
Dienste-Übersicht in der Systemsteuerung, lässt sich starten
und beenden wie man will.

…und wie heisst der Service ? Immerhin könnte manch einer
dann dieselbe Situation versuchen nachzustellen :wink:

#include
#include
#include
#include
#include
#include
//#include
#include „…\service\TestService\TestService.h“

Rein intuitiv stimmt das nicht und müsste durch die volle Pfadangabe ersetzt werden.

Die extrem lange Wartezeit macht mich stutzig. Stimmt da an
der Installation des Services immer noch etwas nicht, oder was
sonst kann es denn noch sein, dass dieses CoCreateInstance
nicht funktioniert?

Funktioniert das Kompilieren ohne Fehler ? Mit dem Debugger testen, ob die Variablen korrekt befüllt werden.

Ich arbeite mit Windows XP (SP2) und Visual Studio 6.

Da gibt’s hier noch mehr :wink:
Aber hier eine Seite, die evtl. hilfreich sein könnte: http://www.programmersheaven.com/zone15/mh77.htm

HTH
mfg M.L.

Hallo zurück,
und erst mal Danke.

…und wie heisst der Service ? Immerhin könnte manch einer
dann dieselbe Situation versuchen nachzustellen :wink:

das wird nicht gehen, denn ich habe diesen (ca. 6 Jahre alten) Quellcode als einzige direkt vom Programmierer bekommen (der auch nicht mehr viel Ahnung davon hat) - keiner wird genau diese Situation nachstellen können :wink: Aber bitte, der Service heißt - je nach Wahl entweder TestService oder GistService, je nachdem wie man ihn in die Registry einträgt - es funktioniert aber beides nicht.

#include „…\service\TestService\TestService.h“

Rein intuitiv stimmt das nicht und müsste durch die volle
Pfadangabe ersetzt werden.

Er findet die Datei, es kompiliert ja alles einwandfrei - das sollte nicht das Problem sein

Die extrem lange Wartezeit macht mich stutzig. Stimmt da an
der Installation des Services immer noch etwas nicht, oder was
sonst kann es denn noch sein, dass dieses CoCreateInstance
nicht funktioniert?

Funktioniert das Kompilieren ohne Fehler ?

Siehe oben

Mit dem Debugger
testen, ob die Variablen korrekt befüllt werden.

bei dem Wort debuggen allein laufen mir Schauer über den Rücken. Ich studiere mittlerweile im 8. Semester - aber ich habe mich immer fein davor gedrückt. Aber ich kanns ja versuchen…

Ich arbeite mit Windows XP (SP2) und Visual Studio 6.

Da gibt’s hier noch mehr :wink:

Auch wenn meine Information vielleicht überflüssig war: woher soll ich das wissen. Solche Bemerkungen mag ich nicht.

Aber es haben sich neue Erkenntnisse ergeben. Ich habe dieses Tutorial gefunden:

http://www.codeguru.com/cpp/com-tech/activex/tutoria…

Und ausprobiert, da der Code dem mir vorliegenden in den Grundzügen auch ähnelt. Mal davon abgesehen dass ich beim Serverteil den gegebenen Code

STDMETHODIMP CDosCom::RunCmd()
{
 system("dir | more");
 return S\_OK;
}

schlicht und einfach nirgens einfügen kann, weil er überall meckert, dass die Funktion scho einen Rumpf hätte (wie gesagt - C++ ist nicht meine Stärke - beschäftige mich erst seit Kurzem damit, tendiere eher zu Java), kann ich beides wunderbar nachvollziehen und kompilieren. Den Server kann ich einwandfrei starten, aber wenn ich den Client starte, bekomme ich exakt dieselbe Fehlermeldung wie bei meinem GistService - was z.T. wahrscheinlich daran liegt, dass dieser bei diesem Tutorial abgeschrieben wurde… Aber wenn schon dieser klitzekleine Test-Server / Client nicht funktioniert, da frage ich mich, ob es nicht doch irgendwie am System liegt…

Gruß
Kerstin

Und ausprobiert, da der Code dem mir vorliegenden in den
Grundzügen auch ähnelt. Mal davon abgesehen dass ich beim
Serverteil den gegebenen Code

STDMETHODIMP CDosCom::RunCmd()
{
system(„dir | more“);
return S_OK;
}

schlicht und einfach nirgens einfügen kann, weil er überall
meckert, dass die Funktion scho einen Rumpf hätte (wie gesagt

  • C++ ist nicht meine Stärke - beschäftige mich erst seit
    Kurzem damit, tendiere eher zu Java), kann ich beides
    wunderbar nachvollziehen und kompilieren.

So, ich habe die Stelle doch noch gefunden, wo das hingehört. Leider ändert auch das Einfügen nichts an der Situation.

Jemand hatte gemeint, es könnte an der Windows-Firewall liegen. Aber auch wenn ich diese deaktiviere, passiert nichts. Nen Versuch war’s wert…