crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Экспортные функции в библиотеке на QT, Как правильно написать экспортные функции
Snak2013
  опции профиля:
сообщение 13.2.2017, 9:06
Сообщение #1


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 11.2.2017
Пользователь №: 4708

Спасибо сказали: 0 раз(а)




Репутация:   0  


Доброго времени суток, Для проекта хочу использовать библиотеку DLL написанную на QT. Функции в библиотеки я объявил следующим образом

extern "C" __declspec( dllexport ) int __stdcall InitUserDLLCom(void * value);
extern "C" __declspec( dllexport ) bool __stdcall PgiCheckMenuItemCom(char const * stFunction, IPluginCall * IPC);


После компиляции библиотеки я открыл ее с помощью утилиты "depends" чтобы посмотреть названия экспортных функций, и они оказались изменены. В Visual С++ это решалось бы с помощью .def файла но я не нашел как его подключить в проект на qt. Подскажите пожалуйста как правильно написать экспортные функции чтобы их названия не искажались.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 13.2.2017, 11:31
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9687
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 771 раз(а)




Репутация:   94  


Должно помочь: Avoiding name mangling in Qt dll
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Snak2013
  опции профиля:
сообщение 14.2.2017, 8:32
Сообщение #3


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 11.2.2017
Пользователь №: 4708

Спасибо сказали: 0 раз(а)




Репутация:   0  


Спасибо но к сожалению эта статья мне оказалась мало полезной. Экспортировать классы мне ненужно только функции. Но основная проблема в том что приложение которое будет вызывать эти функции писал не я и оно имеет закрытый код а мой проект является плагином для этого приложения. Подскажите может есть способ как нибудь использовать .def файл как в Visual C++. Возможно я просто не понял эту статью с английским у меня крайне плохо =(
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.2.2017, 11:17
Сообщение #4


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9687
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 771 раз(а)




Репутация:   94  


там предлагается обернуть функции:
extern "C"
{
// my C-functions to export
}
хм, хотя у тебя написано extern "C"

Сообщение отредактировал Litkevich Yuriy - 14.2.2017, 11:20
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 16.2.2017, 17:30
Сообщение #5


Мастер
******

Группа: Модератор
Сообщений: 3334
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 226 раз(а)




Репутация:   41  


В .pro файл добавь:
DEF_FILE += mylib.def


в def файле пиши:
LIBRARY mylib

EXPORTS InitUserDLLCom
EXPORTS PgiCheckMenuItemCom
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Snak2013
  опции профиля:
сообщение 17.2.2017, 11:33
Сообщение #6


Новичок


Группа: Новичок
Сообщений: 7
Регистрация: 11.2.2017
Пользователь №: 4708

Спасибо сказали: 0 раз(а)




Репутация:   0  


ViGOur, Спасибо помогло.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 1.3.2017, 11:53
Сообщение #7


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9687
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 771 раз(а)




Репутация:   94  


ViGOur, я даже не знал про то, что в pro-файле DEF-ы можно указывать, я какую-то консольную утилу в своё время использовал, которая что-то делала с DEF-файлами.
Спасибо!
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 23.3.2017, 11:13