2010-09-24 2 views
1

есть многоплатформенный компилятор C++, который можно связать с любым программным обеспечением?Создание кода на C++ во время выполнения, его компиляция и запуск

Допустим, я хочу сгенерировать код C++ во время выполнения, скомпилировать его и запустить. Я ищу компактное решение (куча классов), желательно лицензия LGPL/BSD :)

Насколько я знаю, это можно сделать на Java и C#. Как насчет C++?

Благодаря

+1

Обратите внимание, что компиляция C++ может быть медленной, поэтому не ожидайте перекомпиляции целых C++-скриптов 60 раз в секунду. Кроме того, будьте готовы добавить некоторые зависимости к вашему проекту. – luiscubal

+2

Имейте в виду, что Java/C# работают поверх виртуальной машины, а C++ необходимо скомпилировать в собственный код. – Bobby

+0

@Bobby: thats not always true, некоторые java-сборки JIT'ed, то же самое касается C# edit: nevermind, missinterpreted смысл этого ответа ... – Necrolis

ответ

2

Я падение C++ вообще и использование Google V8. Если вы хотите использовать C++, потому что люди, использующие ваше приложение, знают об этом, у них не должно быть никаких проблем с javascript.

И это чертовски быстро. И Javascript - классный язык.

+0

Я рассматривал C++ bacause производительности. Интересно, насколько медленнее v8 runns js по сравнению с аналогичным кодом на C++. – Seba

+0

есть как раз вовремя компиляция с V8, так что вам обязательно нужно ориентироваться. Однако я считаю, что простота использования V8 компенсирует проблемы, с которыми вы столкнетесь, если попытаетесь скомпилировать код C++ на лету. –

1

Такого рода вещи гораздо сложнее в C++, потому что язык не использует виртуальную машину (или «среда выполнения»), который абстрагирует особенности машины прочь.

Вы можете посмотреть в gcc, это под GPL IIRC, а порты существуют для всех основных платформ.

4

Возможно, один из модулей CLang поможет? Он еще не сух на стороне C++, но, безусловно, скоро.

+0

Выглядит многообещающе. Благодарю. – Seba

4

Я не знаю ни одного открытых те источники для C++, но если вы хотите небольшие и компактные сценарии и не зацикливаться на C++ LUA может быть вариантом для вас

2

Я сделал это лет назад в Linux, создав код C++ в файл, скомпилировав его с помощью shell execute (с gcc), а затем динамически связал в сгенерированной библиотеке. Разумеется, динамическая связь различается между платформами.

+0

Хорошее мышление :) – Seba

+0

Я тоже это сделал (парсер принимал уравнение, а код C генерировался «на лету»). Проблема в том, что вам нужна полная среда разработки, которую вы должны развернуть с вашим приложением. На linux это вообще не проблема, но на других платформах это так. Более того, с этим подходом существуют риски безопасности. Imho, скрипты превосходны, даже в ситуациях, когда вам нужна скорость. –

1

Когда мы изучали скрипты, мы выбрали AngelScript из-за сходства с C++. V8 замечательный, но он определенно ограничен некоторыми платформами, AngelScript намного проще скомпилировать и, возможно, узнать (если вы пришли из C++) и имеет лицензию zlib. http://www.angelcode.com/angelscript/

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