использование dll, написанного на QT, в delphi 7 |
Здравствуйте, гость ( Вход | Регистрация )
использование 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
mydll.def
|
|
|
Гость_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. |
|
|
Текстовая версия | Сейчас: 20.4.2024, 0:29 |