|
Manchmal möchte man für Debug Ausgaben bzw Logging gerne die GUID Struktur in einen lesbaren String konvertieren. Auf der Suche nach einer Lösung kamen wir Windows API Funktionen wie StringFromCLSID oder StringFromGUID2 entgegen, welche eigentlich den Zweck erfüllen. Leider muss man sich noch um den allokierten Speicher kümmern. Durch Zufall bin ich auf einen Konstruktor des ATL::CComBSTR gestossen, welcher schon die ganze Arbeit erledigt :) Hier ein kleines Beispiel: inline void DebugOutGuid( GUID g ) { OutputDebugString( ATL::CComBSTR( g ) ); } Die DebugOutGuid Funktion kann auch mit folgenden Typen aufgerufen werden. - GUID
- IID
- REFIID
- REFCLSID
- CLSID
Typedefs and defines: typedef struct _GUID { unsigned long Data1; unsigned short Data2; unsigned short Data3; unsigned char Data4[ 8 ]; } GUID;
#define REFCLSID const IID & #define REFIID const IID &
typedef GUID IID; typedef GUID CLSID;
Weiterführende Links:
|
|
Last Updated on Thursday, 18 June 2009 08:13 |
|
|
Hier ein kleiner Tipp zum MIDL Kompilerfehler "error MIDL2020" in Verbindung mit dem [propput] - [propget] Attributen. Folgender Code erzeugte bei mir den oben genannten Fehler: [propput] HRESULT Domain([in] BSTR bstrDomain, [in] BSTR newVal); [propget] HRESULT Domain([out, retval] BSTR* pVal); Bei Verwendung von propget,propput Paaren ( Domain ), muss die Anzahl der Parameter natürlich gleich sein ;) Hier die korrigierte Version: [propput] HRESULT Domain([in] BSTR bstrDomain ); [propget] HRESULT Domain([out, retval] BSTR* pVal);
|
|
Last Updated on Tuesday, 24 March 2009 09:52 |
Ein immer wieder kehrenrd Fehler der mir unterläuft ist folgender Kompilerfehler:
error C2065: 'COINIT_MULTITHREADED' : undeclared identifier
Um den Fehler zu beheben muss einfach folgendes Macro definiert werden:
#define _WIN32_DCOM
|
|
Last Updated on Friday, 27 February 2009 10:41 |
|
Hier möchte ich kurz einige nützliche ATL Debug Macros vorstellen. _ATL_DEBUG_QI:
Fügt zusätzliche Debug Ausgaben in die Standard QueryInterface Implementierung ein. _ATL_DEBUG_REFCOUNT: Erleichtert bei der Suche nach vergessenen AddRef bzw Release aufrufe. Wird _ATL_DEBUG_REFCOUNT definiert, wird automatisch das Macro _ATL_DEBUG_INTERFACES definiert. Um diese Macros nicht jeden Projekt neu definieren zu müssen, bietet sich eine einfache Header Datei an. Diese kann dann entsprechend eingebunden werden. Hier ein Beispiel atldebug.h: #ifndef _ATL_DEBUG_H #define _ATL_DEBUG_H 1
#ifdef _DEBUG
#define _ATL_DEBUG_QI #define _ATL_DEBUG_REFCOUNT
#endif
#endif //_ATL_DEBUG_H
Weiterführende Links: |
|
Last Updated on Tuesday, 25 November 2008 09:03 |
|
Das mysteriöse __RPC__deref_out, wo kommt es her, was macht es? Nach einem importlib auf eine fremde IDL Datei bekam ich auf einmal einen merkwürdigen Compiler Fehler: "Missing Parameter type '__RPC__deref_out'"
Nach einiger Suche im Internet habe ich folgende Lösungen gefunden. 1: Include Einfach folgende Dateinen includieren: #include <rpcsal.h> #include <sal.h>
2: Define Einfach folgendes define #define __RPC__deref_out 3: Update Eine weitere Möglichkeit besteht darin, sein Windows Platform SDK zu updaten. Damit ist das __RPC__deref_out bekannt und es treten keine Compilerfehler mehr auf. Weiterführende Links: |
|
Last Updated on Saturday, 19 July 2008 23:34 |
|
|
|
|
<< Start < Prev 1 2 Next > End >>
|
|
Page 1 of 2 |