Модератор: Модераторы
Снег Север писал(а):Насколько я знаю, нет способа внедрить С++ код в проект на Lazarus. Единственное, что приходит в голову - сделать на С++ dll с интерфейсом, совместимым с вызовами на FPC.
Снег Север писал(а):Насколько я знаю, нет способа внедрить С++ код в проект на Lazarus. Единственное, что приходит в голову - сделать на С++ dll с интерфейсом, совместимым с вызовами на FPC.
скалогрыз писал(а):если C-обёртку написать, можно компоновать С++ код, без dll.
CRobin писал(а):Как это может выглядеть на практике?
extern "C" {
...
}
CRobin писал(а):скалогрыз а сишные функции как вставить в Lazarus?
{$L deflate.o} // Объектный файл с функцией
function deflate(var strm: z_stream; flush: cint): cint; cdecl; external;
extern "C" {
int deflate(z_stream * strm, int fluch)
{
....
}
}
const
libz='zlib1';
function deflate(var strm: z_stream; flush: cint): cint; stdcall; external libz name 'deflate';
CRobin писал(а):Чем практически отличается dll от объектного файла, если оба требуют предварительной компиляции?
CRobin писал(а):Скажите, я правильно понимаю что в обоих случаях в модуле/библиотеке С++ могут быть только функции (флэт апи)? Глобальных переменных, в которых хранятся внутренние состояния там быть не может?
Alex2013 писал(а):Я даже классы через DLL передавал ...
(В основной программе делал точно такой же класс но с абстрактными методами, а в DLL функцию которая возвращала ссылку на экземпляр класса
которую я благополучно присваивал переменной "абстрактного класса" ... )
Alex2013 писал(а):Нет, DLL писал в Дельфи использовал в Лазарусе .
Но думаю что попробовать при совпадении типов можно
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 250