crossplatform.ru

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

 
Ответить в данную темуНачать новую тему
> использование dll, написанного на QT, в delphi 7
Гость_Tigr_*
сообщение 27.9.2011, 5:24
Сообщение #1





Гости








    


Имеется библиотека с классами и функциями, которая создана на QT Creator. Возникла необходимость использовать эти классы и функции в Delphi 7. Это вообще технически возможно? И если возможно то маленький примерчик. Вроде как API тоже на сях написаны и в делфях используются на ура.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Fill_*
сообщение 22.10.2011, 6:30
Сообщение #2





Гости








    


столько времени, а ответа все нет......................................
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 22.10.2011, 10:17
Сообщение #3


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


знаю только, как в студии делается (компилятор cl) - пишутся экспортные функции для DLL и составляется список экспорта в файлу def. После компиляции эту DLL можно подключить динамически

например

mydll.cpp
extern "C" void WINAPI F1(int a, int b)
{
    
}

extern "C" int WINAPI F2(int c)
{
    return 0;
}


mydll.def
; список экспорта

LIBRARY      "mydll"

EXPORTS
    F1      PRIVATE
    F2      PRIVATE
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_Fill_*
сообщение 23.10.2011, 4:51
Сообщение #4





Гости








    


Работает. Но это только функции, а классы?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Алексей1153
  опции профиля:
сообщение 23.10.2011, 10:55
Сообщение #5


фрилансер
******

Группа: Участник
Сообщений: 2939
Регистрация: 19.6.2010
Из: Обливион
Пользователь №: 1822

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




Репутация:   34  


С классами, если честно, не знаю, как по правилам. Когда пользовался сторонними DLL (к примеру, DirectX), там приложены файлы заголовков и библиотек (*.h и *.lib) - можно выполнить статичекую линковку

с динамической линковкой класс , по логике, не экспортируешь на уровне исходного кода. Экспортировать можно интерфейсные функции (в том числе и методы для создания и удаления экземпляров класса), работающие с указателем на экземпляр класса. Я таким образом делал. Но тут минус - для вызова нужных функций класса нужно делать экспорт соответствующей функции-интерфейса

Если всё это слишком геморно покажется, подождём более опытных, кто скажет, как это делается правильно ))
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
PAFOS
  опции профиля:
сообщение 25.10.2011, 12:23
Сообщение #6


Активный участник
***

Группа: Участник
Сообщений: 258
Регистрация: 27.12.2010
Из: Дмитров
Пользователь №: 2309

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




Репутация:   8  


Это сделать крайне сложно.

Компилятор из С++ языка переделывает все методы класса в функции такие как в Си. Методы классов вызываются с помощью так называемого thiscall. Суть в том, что помимо основных аргументов в функцию передается указатель this.

Но это только самое-самое основное. а ведь есть еще const, static, mutable и т.п. члены класса...
Теоретически возможно, но это надо быть мазохистом).

Единственное что могу посоветовать - сделать COM-обертку над библиотекой Qt и заюзать ее в Delphi.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

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


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




RSS Текстовая версия Сейчас: 20.4.2024, 0:29