Re: Использование С++ кода в Delphi. Чего добились ?
От: Sergei I. Gorelkin Россия  
Дата: 30.03.10 09:34
Оценка:
Здравствуйте, DevilDevil, Вы писали:

DD>Существует теоретически кроссплатформенная библиотека на C/С++. Необходимо использовать этот код в Delphi/FreePascal. Самый простой способо на сегодняшний день — использование Dll. Моя задача (моё желание) заключается в том, чтобы использовать откомпилированный (obj) код в проектах Delphi.


Паскаль как таковой нормально стыкуется только с C. Стыковка с C++ гораздо более проблематична из-за множественного наследования, неймспейсов и т.п. Единственным нормальным и работающим способом является написание враппера на чистом C. Так это было сделано восемь лет назад для совокупления Qt с Kylix, так оно до сих пор используется в Lazarus LCL/Qt.

DD>- откомпилированный код даёт много obj, которые сложнее увязывать. Существует ли способ компилировать несколько c/cpp файлов в один оbj ?


Если откомпилить С/С++ код в static library, то во Free Pascal результат можно целиком подключить директивой {$linklib имя_файла}. К Дельфи это не применимо.

DD>- какой компилятор стоит выбрать (и с какими опциями) чтобы C++ компилировался в приемлемый формат (без использования сторонних утилит по конвертировнаию форматов) и имел хорошую скорость выполнения? Intel Compiler?


Для FPC/Windows нужен формат coff, для FPC/Linux — формат elf, для Delphi нужен формат omf. coff генерится всеми компиляторами, omf — только Borland C++ Builder.

DD>- всплывают ограничения. Типа static-функции или (что ещё серьёзнее) функции RTL. Какими опциями компилятора/софтом/приёмами обходить эти ограничения ? Существует ли библиотека, содержащая основные C++RTL ? Может дампить из msvcrt.dll ? Напомню — библиотека должна быть кроссплатформенной. На x86.


msvcrt.dll — это RTL от C. RTL для С++ — это что-то вроде msvcp.dll. В Линуксе своя песня, каждый дистрибутив по-своему уникален. Из-за чего рантайм FPC не использует libc, а фактически реализует ее с нуля.

DD>очень нужен ваш опыт и совет


Лично у меня опыта в данной области немного, т.к. я в нее не лезу, считая ее гиблым делом.
Вот документ, обобщающий тему FPC+C:
ftp://ftp.freepascal.org/pub/fpc/docs-pdf/CinFreePascal.pdf
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.