Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
| Гость_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
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 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
|
![]() фрилансер ![]() ![]() ![]() ![]() ![]() ![]() Группа: Участник Сообщений: 2946 Регистрация: 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. |
|
|
|
![]() ![]() ![]() |
|
Текстовая версия | Сейчас: 26.12.2025, 23:54 |