CoCreateInstance
-
Hallo,
mit LCC versuche ich einen ShortCut zu erstellen. Der Funktionsaufruf ist wie folgt:
BOOL CreateLink(char *cPathObj, char *cPathLink, char *cDesc) { IShellLink* psl; HRESULT hres = CoCreateInstance(&CLSID_ShellLink,NULL,CLSCTX_INPROC_SERVER,&IID_IShellLink,(LPVOID*)&psl); if(SUCCEEDED(hres)){ IPersistFile* ppf; psl->lpVtbl->SetPath(psl,cPathObj); psl->lpVtbl->SetDescription(psl,cDesc); hres = psl->lpVtbl->QueryInterface(psl,&IID_IPersistFile,(LPVOID*)&ppf); if(SUCCEEDED(hres)){ WCHAR wsz[MAX_PATH]; MultiByteToWideChar(CP_ACP,0,cPathLink,-1,wsz,MAX_PATH); hres = ppf->lpVtbl->Save(ppf,wsz,TRUE); ppf->lpVtbl->Release(ppf); } psl->lpVtbl->Release(psl); } return(SUCCEEDED(hres)); }
Der Compiler (LCC) gibt mir folgende Fehlermeldung aus:
Wedit output window build: Wed Mar 12 18:34:41 2003
install.obj .text: undefined reference to '_IID_IShellLinkA'
install.obj .text: undefined reference to '_CLSID_ShellLink'
install.obj .text: undefined reference to '_IID_IPersistFile'
p:\lcc\bin\make.exe
Compilation + link time:0.1 sec, Return code: 3Eingebunden habe ich:
#include <windows.h> #include <shlobj.h> #include <shellapi.h> #include <winreg.h>
und shell32.lib sowie ole32.lib
Kann mir jemand sagen, was ich vergessen habe?
Vielen Dank
Gruß, ube
-
Du musst glaub ich jeweils das & weglassen
(also vor CLSID_ShellLink, IID_IShellLink und IID_IPersistFile)
Dazu auch aus der MSDN: Shell Links
-
Lass Dir nichts erzählen, natürlich muß das & da hin. Aber hast Du auch uuid.lib mit eingebunden?
-
Lass Dir nichts erzählen
-
In dem Code-Schnippsel von der MSDN-Seite steht aber teilweise kein & davor
[ Dieser Beitrag wurde am 12.03.2003 um 20:02 Uhr von flenders editiert. ]
-
In dem Code-Schnippsel von der MSDN-Seite steht aber teilweise kein & davor
Das ist C++, der Fragesteller verwendet aber C.
-
Achso
-
Hallo King,
natürlich habe ich die uuid.lib vergessen.
Vielen Dank.
Gruß ube
-
@flenders: Trotzdem bist du ein super Moderator.
-