Russian Qt Forum
Ноябрь 25, 2024, 12:43 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] WinAPI в Qt - ошибки линковки.  (Прочитано 5485 раз)
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.

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


« Последнее редактирование: Февраль 11, 2011, 16:30 от Sanya » Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #1 : Февраль 11, 2011, 15:33 »

А типо этого писали?
Цитировать
...
LIBS += -lole32
...
« Последнее редактирование: Февраль 11, 2011, 16:05 от kuzulis » Записан

ArchLinux x86_64 / Win10 64 bit
Sanya
Гость
« Ответ #2 : Февраль 11, 2011, 16:14 »

ну да, с LIBS += -l ole32 исправилась часть ошибок, но осталась эта

/QCreateLink/mainwindow.cpp:23: undefined reference to `IID_IPersistFile'
Записан
kuzulis
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2812


Просмотр профиля
« Ответ #3 : Февраль 11, 2011, 16:19 »

а если еще?
Цитировать
...

LIBS += -lole32 -luuid
...
Записан

ArchLinux x86_64 / Win10 64 bit
Sanya
Гость
« Ответ #4 : Февраль 11, 2011, 16:30 »

О!!!
Спасибо большое!!!

Вот с ole32.lib я пробовал, а до uuid не допер, точнее не до нашел.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.245 секунд. Запросов: 23.