Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Guten Morgen.

Ich habe ein kleine Problem. Ich fange grade an mich mit COM zu beschäftigen. also habe ich das Tutorial von Microsoft verwendet.

Walkthrough: Creating a COM Server Using Wizards

soweit so gut. Beim Testclient habe ich dann ein Problem. Ich bekomme an der stell (spUnknown.QueryInterface(&pI);) immer einen Fehler. &pI zeigt auf eine Addresse und in der steht nur (0x0000000) drin.

Dort bekomme ich dann immer folgende Fehlermeldung:

Unbehandelte Ausnahme bei 0x001a3e09 in COMTest.exe: 0xC0000005:

Zugriffsverletzung beim Lesen an Position 0x00000000

System:

Windows Vista

Visual studio 2008

C++

Danke schonmal.


#include "stdafx.h"

#include <iostream>

#include "atlbase.h"

#import ".\MyServer\MyServer.tlb" no_namespace


using namespace std;


struct OleCom {

      OleCom() { CoInitialize(NULL);}

      ~OleCom() { CoUninitialize(); }

   }olecom;

   int _tmain(int argc, _TCHAR* argv[])

   {

      CComPtr<IUnknown> spUnknown;

      spUnknown.CoCreateInstance(__uuidof(Object1));

      CComPtr<IObject1> pI;

      spUnknown.QueryInterface(&pI);         //fehler

      short res = 0;

      pI->get_GetANum(&res);

      cout << res << endl;

      return 0;

   }

Geschrieben
ja ok das ist ja kein Problem, aber warum findet er bei mir den com-server nicht?
Keine Ahnung. Wie sind denn die Rückgabewerte? Wenn du die für dich behältst, erschwert das die Diagnose.

Möglicherweise ist der Server gar nicht registriert? Dafür brauchst du unter Vista und Windows 7 Administratorrechte.

Geschrieben

Danke

Mein Problem war Vista.(Toll dafür nen halben Tag verschwendet).:rolleyes:

Auf meinem XP-Rechner läuft es ohne Probleme :D

Das Führt mich zu meiner nächsten Frage:

Wie bekomme ich es hin das sich mein COM-server unter Vista registriert?

Ist es möglich die Registrierung direkt im Programmcode einzufügen?

Danke

Geschrieben
Wie bekomme ich es hin das sich mein COM-server unter Vista registriert?
Führ die Registrierung als Administrator aus.

Ist es möglich die Registrierung direkt im Programmcode einzufügen?
In welchem Programmcode? Im Server? Wenn das eine DLL ist, hast du ein Henne-Ei-Problem.

Ansonsten geht das natürlich, aber UAC wird sich melden. Wenn man einfach so im Programm Dinge tun könnte, die Adminrechte erfordern, wäre das Ganze ja ziemlich witzlos.

Geschrieben

nein ist keine DLL.

hast du zufällig ein beispiel parat mit dem es möglich ist UAC zu umgehen?

Oder muss ich zum testen immer ein setup erstellen und meinen server dann zum testen immer neu installieren?(das sollte ja das Problem umgehen, wär mir aber zu aufwendig)

Geschrieben
Oder muss ich zum testen immer ein setup erstellen und meinen server dann zum testen immer neu installieren?
Zum Testen empfehle ich, Visual Studio als Adminstrator zu starten, dann klappt das Registrieren als Bestandteil des Build-Prozesses.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...