Randolfxiv Geschrieben 16. Dezember 2010 Geschrieben 16. Dezember 2010 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; } Zitieren
Klotzkopp Geschrieben 16. Dezember 2010 Geschrieben 16. Dezember 2010 CComPtr::CoCreateInstance und CComPtr::QueryInterface haben einen Rückgabewert, den man gerne auch prüfen darf System: Windows Vista Visual studio 2008 C++Dann schieb ich dich mal ins richtige Forum. Zitieren
Randolfxiv Geschrieben 16. Dezember 2010 Autor Geschrieben 16. Dezember 2010 ja ok das ist ja kein Problem, aber warum findet er bei mir den com-server nicht? Zitieren
Klotzkopp Geschrieben 16. Dezember 2010 Geschrieben 16. Dezember 2010 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. Zitieren
Randolfxiv Geschrieben 16. Dezember 2010 Autor Geschrieben 16. Dezember 2010 Danke Mein Problem war Vista.(Toll dafür nen halben Tag verschwendet). Auf meinem XP-Rechner läuft es ohne Probleme 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 Zitieren
Klotzkopp Geschrieben 16. Dezember 2010 Geschrieben 16. Dezember 2010 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. Zitieren
Randolfxiv Geschrieben 17. Dezember 2010 Autor Geschrieben 17. Dezember 2010 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) Zitieren
Klotzkopp Geschrieben 17. Dezember 2010 Geschrieben 17. Dezember 2010 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. Zitieren
Empfohlene Beiträge
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.