Russian Qt Forum

Qt => Общие вопросы => Тема начата: Sanya от Февраль 11, 2011, 15:24



Название: [РЕШЕНО] WinAPI в Qt - ошибки линковки.
Отправлено: Sanya от Февраль 11, 2011, 15:24
Доброго времени суток!

Пришлось вставить в свое приложение создание создание ярлыка через 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.

Может кто сможет быстренько подсказать в чем затык - время жмет?




Название: Re: WinAPI в Qt - ошибки линковки.
Отправлено: kuzulis от Февраль 11, 2011, 15:33
А типо этого писали?
Цитировать
...
LIBS += -lole32
...


Название: Re: WinAPI в Qt - ошибки линковки.
Отправлено: Sanya от Февраль 11, 2011, 16:14
ну да, с LIBS += -l ole32 исправилась часть ошибок, но осталась эта

/QCreateLink/mainwindow.cpp:23: undefined reference to `IID_IPersistFile'


Название: Re: WinAPI в Qt - ошибки линковки.
Отправлено: kuzulis от Февраль 11, 2011, 16:19
а если еще?
Цитировать
...

LIBS += -lole32 -luuid
...


Название: Re: WinAPI в Qt - ошибки линковки.
Отправлено: Sanya от Февраль 11, 2011, 16:30
О!!!
Спасибо большое!!!

Вот с ole32.lib я пробовал, а до uuid не допер, точнее не до нашел.