2010-01-07 2 views
5

Можем ли мы «легко» (каким-то образом) скомпилировать проект C++ Builder в VisualStudio 2005 C++. Новое в C++ я ищу ссылки в этом вопросе (CBuilder vs VS). Благодарю.Delphi C++ Builder для VisualStudio

ответ

4

Ну, не совсем. Это правда, что «чистые» части C++ должны компилироваться, у вас есть две очень большие проблемы:

Во-первых, Borland сделал некоторые собственные расширения для C++, чтобы сделать его совместимым с продуктами Delphi. Я не помню, что это не так, но они могут быть проблемой в зависимости от того, что вы делаете.

Но главной проблемой является VCL, основная библиотека графического интерфейса пользователя. Если вы работаете в C++ Builder, то в 99% случаев вы используете VCL и используете его довольно сильно. AFAIK, VCL не будет компилироваться под любой компилятор Microsoft по многим причинам, в том числе тот, который я уже упомянул.

Так что, в общем, вы застряли портирование на .NET (или MFC или что-то еще, если вы мазохист), если вы хотите, чтобы это выполнялось под VisualStudio. Одно яркое пятно здесь состоит в том, что многие сторонние разработчики компонентов приняли .NET, поэтому вам, возможно, не придется делать столько работы, чтобы порт проекта, как вы думаете.

0

В конце концов, это все C++, поэтому вы можете включить ваши файлы C++ Builder в решение VS2005 и связать библиотеки. VS2005 гораздо лучше увидит MFC или .NET, чем все классы Turbo из C++ Builder, без сомнения. Импорт ресурсов также может быть проблемой.

Здесь меня также интересуют другие ответы. Возможно, нам придется пройти по этому же пути по нашему проекту.

4

Если вы используете классы VCL, вы не сможете скомпилировать свой код в Visual C++. VCL вводит некоторые новые языковые структуры на язык C++, чтобы сделать его совместимым с delphi, __property и т. Д. И даже если вы можете переместить код VCL в какую-то внешнюю динамически связанную библиотеку, все еще будет много проблем с вызовом функций VCL. Это связано с тем, что соглашение о назначении Borland __fastcall отличается от большинства других его реализаций. Версия Borland передает 3 аргумента в регистры, в то время как большинство других компиляторов используют 2.

В целом может возникнуть множество проблем из разных реализаций компилятора, в частности, если вы используете соглашение о вызове VCL или __fastcall. Дело в C++ Builder заключается в том, что он построен для совместимости с Delphi и VCL, а VCL - отличная инфраструктура для RAD и GUI-программ, что добавляет стоимость меньшей совместимости с другими компиляторами.

+0

Спасибо ... и в этом случае мой проект включает в себя множество основных классов vcl. – volvox

Смежные вопросы