Здравствуйте, 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