Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 12, средняя оценка - 4.67
vlinx
1 / 1 / 0
Регистрация: 27.06.2014
Сообщений: 74
#1

Компиляция исходного кода в работающей программе - C++

07.07.2014, 16:21. Просмотров 1539. Ответов 47
Метки нет (Все метки)

Привет.

Подскажите, как можно скомпилировать код, и использовать полученный результат в запущенной программе, если этот самый код находится, в компоненте (memo, list итд - неважно) этой запущенной пргораммы.

Я нашел 1 вариант - это сохранение этого кода в файл и компиляция в отдельном процессе.
Это правильный вариант? и есть ли еще пути решения?
Лучшие ответы (1)
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
SatanaXIII
Супер-модератор
Эксперт С++
5602 / 2636 / 242
Регистрация: 01.11.2011
Сообщений: 6,495
Завершенные тесты: 1
07.07.2014, 16:35     Компиляция исходного кода в работающей программе #2
То есть вы хотите написать компилятор? С графической оболочкой, где Memo и так далее? То есть вы хотите написать среду разработки.
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,930
Завершенные тесты: 1
07.07.2014, 16:38     Компиляция исходного кода в работающей программе #3
Цитата Сообщение от vlinx Посмотреть сообщение
Это правильный вариант?
Это будет работать.
Цитата Сообщение от vlinx Посмотреть сообщение
Есть ли еще пути решения?
Интерпретация и JIT.
vlinx
1 / 1 / 0
Регистрация: 27.06.2014
Сообщений: 74
07.07.2014, 16:39  [ТС]     Компиляция исходного кода в работающей программе #4
SatanaXIII ,
не не, это мне не по силам.

я хочу не компилятор написать, а узнать способ выполнения кода (и использования его результата в программе) в работающем приложении.
Хотябы вариант, который я написал - возможен?
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
07.07.2014, 16:42     Компиляция исходного кода в работающей программе #5
vlinx, вполне возможен.
Если компилятор поддерживает функции встраивания, то можно использовать их. Например в Clang такое есть. Еще можно посмотреть сюда.
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
07.07.2014, 16:43     Компиляция исходного кода в работающей программе #6
В приложении создаете процесс с вызовом компилятора и передачей ему посредством командной строки файла с текстом программы. Мыслится так
vlinx
1 / 1 / 0
Регистрация: 27.06.2014
Сообщений: 74
07.07.2014, 16:48  [ТС]     Компиляция исходного кода в работающей программе #7
Nick Alte, Интерпретация - это вариант с написанием своего компилятора так понимаю? тогда не подходит.

про JIT в с++ надо мне почитать, ничего про это не знаю

Добавлено через 56 секунд
Ilot, еще один момент - как в основную программу возвратить результат?
Ilot
Модератор
Эксперт С++
1807 / 1164 / 226
Регистрация: 16.05.2013
Сообщений: 3,060
Записей в блоге: 5
Завершенные тесты: 1
07.07.2014, 16:52     Компиляция исходного кода в работающей программе #8
Цитата Сообщение от vlinx Посмотреть сообщение
Ilot, еще один момент - как в основную программу возвратить результат?
Ну так любая не void функция возвращает результат, верно?
vlinx
1 / 1 / 0
Регистрация: 27.06.2014
Сообщений: 74
07.07.2014, 16:54  [ТС]     Компиляция исходного кода в работающей программе #9
Ilot, да.
Ладно, надо попробовать - меньше вопросов будет)
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
07.07.2014, 17:05     Компиляция исходного кода в работающей программе #10
Цитата Сообщение от vlinx Посмотреть сообщение
Интерпретация - это вариант с написанием своего компилятора так понимаю?
Не обязательно. По моей ссылке есть пример как раз использования готового интерпретатора С.
JIT - это из той же оперы, только компиляция, а не интерпретация. У некоторых компиляторов есть инструментарий для встраивания в приложения. По сути это библиотеки, которые предоставляют набор API для организации процесса сборки.

Добавлено через 8 минут
Вот еще по ссылочка по теме.
Nick Alte
Эксперт С++
1608 / 1000 / 118
Регистрация: 27.09.2009
Сообщений: 1,930
Завершенные тесты: 1
07.07.2014, 17:07     Компиляция исходного кода в работающей программе #11
Цитата Сообщение от vlinx Посмотреть сообщение
Интерпретация - это вариант с написанием своего компилятора так понимаю?
Свой писать долго, лучше взять готовый. Такой вариант даёт наибольшую свободу.
По поводу JIT можно сказать, что это усиленный вариант интерпретации, когда вся программа или некоторые её фрагменты преобразуются в машинный код.

А если мы говорим об использовании решения с компилятором, то лучше всего встраивать введённый код в шаблон DLL, которую затем можно будет загружать и вызывать.
Renji
1876 / 1274 / 290
Регистрация: 05.06.2014
Сообщений: 3,636
07.07.2014, 17:08     Компиляция исходного кода в работающей программе #12
Nick Alte, Интерпретация - это вариант с написанием своего компилятора так понимаю?
Только парсера. Программа сама разбирает текст, сама же его и исполняет. Код для процессора при этом не генерируется. Запуск кода скорее всего произойдет быстрее (не нужно гонять по нему оптимизаторы и прочую муть), но сам код будет тормознутее. Впрочем, не факт что вы это заметите (была миллисекунда, стало десять).

Ну и если идти этим путем, проще прикрутить интерпретатор Перла/Питона и не парить себе мозг.
nmcf
5267 / 4587 / 1538
Регистрация: 14.04.2014
Сообщений: 18,220
07.07.2014, 17:11     Компиляция исходного кода в работающей программе #13
А для чего это нужно? Может просто использовать иное решение?
DrOffset
7058 / 4199 / 949
Регистрация: 30.01.2014
Сообщений: 6,965
07.07.2014, 17:14     Компиляция исходного кода в работающей программе #14
vlinx, Вот отличная статья на тему встраивания этого интерпретатора. Как раз показано как вернуть результат интерпретируемой функции в основную программу.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2014, 18:03     Компиляция исходного кода в работающей программе
Еще ссылки по теме:
Компиляция C++ кода через консоль C++
C++ Компиляция кода Source Engine 2013
Компиляция заданного кода в exe через программу C++
Компиляция простейшего кода на C++ под GNU/Linux C++
C++ Защита исходного кода

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
vlinx
1 / 1 / 0
Регистрация: 27.06.2014
Сообщений: 74
07.07.2014, 18:03  [ТС]     Компиляция исходного кода в работающей программе #15
Собрал предложенные варианты:

1) Создание процесса, и вызов компилирования строки(кода).
2) JIT
3) встраивать введённый код в шаблон DLL
4) Использование стороннего интерпретатора(Ch)

Поробовал 1) - но пока не получилось возвратить результат в программу.

Больше всего мне нравится 3).
Впринципе, делать dll и запускать их умею. Nick Alte, тут речь идет не про шаблоны c++? Если нет, то где почитать про процесс встраивания кода в шаблон dll?

Добавлено через 47 секунд
DrOffset, Ваш вариант попробую позже

Добавлено через 8 минут
@nmcf , хочу сделать некий генератор тестовых данных. Продумал систему классов, наследование, композиция и все такое. И вот один из типов(классов) генераторов будет - генерация по введенному пользователем алгоритму, который будет принимать в качестве параметра строку - код, и возвращать строку - значение.

Добавлено через 5 минут
Renji, с питоном пробовал, нормально. Теперь хочу сделать не с питоном
Yandex
Объявления
07.07.2014, 18:03     Компиляция исходного кода в работающей программе
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru