2010-10-26 3 views
8

Я пришел сюда, чтобы задать этот вопрос, потому что этот сайт был очень полезен для меня в прошлом, кажется, есть очень знающие пользователи, которые готовы обсуждать вопрос, даже если это иногда метафизически. А также потому, что он не работал.Есть ли библиотека, которая может скомпилировать C++ или C

Java имеет компилятор, а затем имеет библиотеку JDT, которая может скомпилировать java на лету (например, используется в JasperReports, чтобы превратить шаблон отчета в Java-код).

Мой вопрос: Кто-нибудь знает библиотеку/проект, который предложил бы компиляцию в виде набора классов библиотеки в c/C++. Например: набор классов для выполнения Preprocessing, Parsing, CodeOptimization и, конечно же, двоичного рендеринга для исполняемых изображений, таких как ELF или Win. В основном что-то, что позволило бы скомпилировать скриптовые скрипты c или C++ как часть приложения.

+1

«и, конечно же, двоичный рендеринг для исполняемых изображений, таких как формат ELF или Win». Это меня немного смущает; как таковая система wouldnt («вход компилятора») делает трюк? –

+2

Вы действительно хотите знать, как использовать C или C++ в качестве языков сценариев? Компиляция обычно компилируется. Вы либо хотите получить язык сценариев для запуска в своем приложении », либо выработать, как использовать внешний код компиляции – thecoshman

ответ

5

Возможно, вы сможете что-то приспособить от проекта LLVM.

14

Да: llvm. В частности, clang. По крайней мере, так они рекламируют проекты. Также проверьте this question. Это может быть актуально, если вы решите использовать llvm.

4

Вы можете просто потребовать установить компилятор, а затем вызвать его. Это довольно тяжелое требование, но об единственном способе «встраивания» C или C++. Есть interpreters, которые вы можете внедрить, но в настоящее время это кажется плохим выбором, не в последнюю очередь потому, что любые библиотеки, используемые в скрипте, должны иметь версии разработки (то есть, заголовки и исходные/скомпилированные библиотеки), и эти библиотеки могут быть ограниченным набором функций, поддерживаемым интерпретатором (например, качество реализации шаблона).

Вам лучше использовать язык, такой как Python или Lua для встраивания.

+4

Почему downvote? (Я действительно хочу знать, есть ли проблема с моим ответом.) – 2010-10-26 22:46:49

+2

+1 для упоминания Python как подходящего встроенного языка.Использование Python в этом случае, вероятно, дешевле ресурсов, чем компиляция «на лету». –

+0

Возможно, ваш ответ был опущен, потому что вызов отдельного компилятора не является «единственным способом по-настоящему встроить C или C++». – andref

1

Есть интерпретатор ch, но я не использовал его. Обычно для приложений типа сценариев используется более естественный язык сценариев.

1

Отлично. Похоже, LLVM - это то, чем я был. Большое спасибо за ваши отзывы. Я не в первую очередь после C++ в качестве языка сценариев. Я заметил, что Python используется как встроенный механизм сценариев. Моя основная причина состоит в два раза:

  1. Избавьтесь от Марка, CMake и ад, который Autoconf и заменить его чем-то вроде Scons что связывается в и взаимодействует со всеми этапами составления
  2. Крюка в компиляцию процесс после разбора и автоматического генерации кода. Конкретный мета-код. В моем случае я смог реализовать практически все функции Java в C++, кроме одного: Reflection.

Зачем налагать на ваш код необработанную нагрузку, такую ​​как RTTI, что часто бывает неадекватным. Вместо этого можно выборочно создавать дополнительные функции. Но разработчику придется выбирать, когда и как использовать этот дополнительный код.

+0

О, дорогие боги. Вы сражаетесь с C++. Теперь я чувствую себя плохо для моего ответа: он принесет мне реки плохой кармы. – andref

+0

Хе-хе, не беспокойся о своей карме. Это наоборот. – 640KB

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