Доброго времени суток!
Пришлось вставить в свое приложение создание создание ярлыка через WinAPI/COM.
C++ (Qt)
#include <shlobj.h>
HRESULT CreateLink(LPCTSTR lpszPathObj, LPCTSTR lpszPathLink, LPCTSTR pszArgs, LPCTSTR lpszDesc)
{
HRESULT h_result;
IShellLink* psl;
CoInitialize( NULL );
h_result = CoCreateInstance(CLSID_ShellLink, NULL,
CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID *) &psl);
if (SUCCEEDED(h_result)) {
IPersistFile* ppf;
psl->SetPath(lpszPathObj);
psl->SetArguments(pszArgs);
psl->SetDescription(lpszDesc);
h_result = psl->QueryInterface(IID_IPersistFile, (LPVOID*)&ppf);
if (SUCCEEDED(h_result)) {
h_result = ppf->Save(lpszPathLink, TRUE);
ppf->Release();
}
psl->Release();
}
return h_result;
}
но при компиляции из QtCreator вылетают ошибки зависимостей:
/QCreateLink/mainwindow.cpp:11: undefined reference to `CoInitialize@4'
/QCreateLink/mainwindow.cpp:13: undefined reference to `CoCreateInstance@20'
/QCreateLink/mainwindow.cpp:21: undefined reference to `IID_IPersistFile'
При работе из VS2008 с переменными окружениями среды Qt все работает. Переменные среду окружения из VS перетаскивал в QtCreator.
Может кто сможет быстренько подсказать в чем затык - время жмет?