Как перенести код для Borland C ++ builder в Linux? - PullRequest
5 голосов
/ 02 апреля 2009

У меня есть исходный код для Windows DLL, который написан на C ++ и использует библиотеку визуальных компонентов. Теперь моя задача - перенести это на Linux, но у меня нет исходного кода для самого VCL или какой-либо другой документации (и я никогда не работал с Borland C ++; в мои дни Windows я использовал MFC).

Это не должно быть все так сложно, так как моя DLL не имеет никакого GUI: насколько я вижу, он в основном использует VCL для многопоточности. Я столкнулся с классом, который наследует от TThread, и именно здесь я застрял. Я провел поиск в Интернете, но пока не нашел документации для VCL. Я хотел бы избежать покупки книги на Borland C ++ Builder, потому что у меня нет времени ждать, пока она прибудет с Амазонки. Я не могу рассмотреть возможность покупки пакета для Windows, потому что на работе у меня есть только коробка Linux.

Есть предложения?

Ответы [ 6 ]

5 голосов
/ 02 апреля 2009

Вы должны знать, что VCL, используемый C ++ Builder, полностью написан на Delphi / ObjectPascal. Все приложения c ++ builder включают в себя c ++ с использованием библиотек на основе Delphi.

Проект с открытым исходным кодом FreePascal / Lazarus реконструировал большую часть VCL (почти весь невизуальный материал и большую часть визуального контента) и изначально работает в Linux. Невизуальный VCL-совместимый материал известен как «Библиотека свободных компонентов» («FCL») http://www.freepascal.org/ http://www.freepascal.org/fcl/fcl.var

Источник реализации TThread в FCL должен быть достаточно легким для поиска.

Один из вариантов - переписать во FreePascal, где язык изменится на ObjectPascal, но вызовы VCL и использование компонентов VCL будут практически идентичны.

Другим вариантом может быть перенос на c ++ в Linux и использование VCL FreePascal из c ++. Я не уверен в практичности / осуществимости этого. Кто-то на форумах FreePascal должен помочь ответить на этот вопрос.

Так что другой вариант, как кто-то упомянул, это просто переписать, используя другую библиотеку потоков.

5 голосов
/ 02 апреля 2009

Библиотеки Boost и wxWidgets предоставляют аналоги для классов VCL.

3 голосов
/ 02 апреля 2009

VCL задокументирован на сайте CodeGear . В частности, здесь описана .

Я обнаружил, что документация по многопоточным компонентам VCL довольно скудна. Этот сайт имеет гораздо лучшее описание подхода Delphi / VCL к созданию потоков.

2 голосов
/ 02 апреля 2009

Много лет назад Borland выпустили версию своей IDE для Linux, продаваемую как Kylix . Я не уверен, что он все еще поддерживается, но для вас это может быть путь наименьшего сопротивления.

2 голосов
/ 02 апреля 2009

Вы можете скачать их бесплатный компилятор и попробовать поэкспериментировать с ним. Должна быть возможность запустить его как минимум под WINE. Может быть, даже под FreeDOS.

Это должно быть связано с классом TThread в Delphi / Kylix. Это еще одна альтернатива для изучения. Я действительно считаю, что наиболее важными методами были run () и sync (), но прошло уже много лет с тех пор, как я их использовал.

Однако, если вы планируете аккуратно перенести код в Linux, это может помочь вам самостоятельно повторно реализовать класс TThread с использованием некоторых библиотек наддува или чего-то еще.

1 голос
/ 06 апреля 2009

Есть несколько библиотек, которые предоставляют такие структуры, как многопоточность, например, Повышение (www.boost.org) или ACE (http://www.cs.wustl.edu/~schmidt/ACE.html)

)

Должно быть довольно легко перенести код для использования одной из этих потоковых инфраструктур.

...