![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
Гость_Tigr_* |
![]()
Сообщение
#1
|
Гости ![]() |
Имеется библиотека с классами и функциями, которая создана на QT Creator. Возникла необходимость использовать эти классы и функции в Delphi 7. Это вообще технически возможно? И если возможно то маленький примерчик. Вроде как API тоже на сях написаны и в делфях используются на ура.
|
|
|
Гость_Fill_* |
![]() ![]()
Сообщение
#2
|
Гости ![]() |
столько времени, а ответа все нет......................................
|
|
|
Алексей1153 |
![]()
Сообщение
#3
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
знаю только, как в студии делается (компилятор cl) - пишутся экспортные функции для DLL и составляется список экспорта в файлу def. После компиляции эту DLL можно подключить динамически
например mydll.cpp
mydll.def
|
|
|
Гость_Fill_* |
![]()
Сообщение
#4
|
Гости ![]() |
Работает. Но это только функции, а классы?
|
|
|
Алексей1153 |
![]()
Сообщение
#5
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: ![]() ![]() ![]() |
С классами, если честно, не знаю, как по правилам. Когда пользовался сторонними DLL (к примеру, DirectX), там приложены файлы заголовков и библиотек (*.h и *.lib) - можно выполнить статичекую линковку
с динамической линковкой класс , по логике, не экспортируешь на уровне исходного кода. Экспортировать можно интерфейсные функции (в том числе и методы для создания и удаления экземпляров класса), работающие с указателем на экземпляр класса. Я таким образом делал. Но тут минус - для вызова нужных функций класса нужно делать экспорт соответствующей функции-интерфейса Если всё это слишком геморно покажется, подождём более опытных, кто скажет, как это делается правильно )) |
|
|
PAFOS |
![]()
Сообщение
#6
|
Активный участник ![]() ![]() ![]() Группа: Участник Сообщений: 258 Регистрация: 27.12.2010 Из: Дмитров Пользователь №: 2309 Спасибо сказали: 29 раз(а) Репутация: ![]() ![]() ![]() |
Это сделать крайне сложно.
Компилятор из С++ языка переделывает все методы класса в функции такие как в Си. Методы классов вызываются с помощью так называемого thiscall. Суть в том, что помимо основных аргументов в функцию передается указатель this. Но это только самое-самое основное. а ведь есть еще const, static, mutable и т.п. члены класса... Теоретически возможно, но это надо быть мазохистом). Единственное что могу посоветовать - сделать COM-обертку над библиотекой Qt и заюзать ее в Delphi. |
|
|
![]() ![]() ![]() |
![]() |
Текстовая версия | Сейчас: 27.2.2025, 15:37 |