• B правой части каждого сообщения есть стрелки и . Не стесняйтесь оценивать ответы. Чтобы автору вопроса закрыть свой тикет, надо выбрать лучший ответ. Просто нажмите значок в правой части сообщения.

Программное написание исходного кода

  • Автор темы Nelson
  • Дата начала
N

Nelson

Доброго времени суток!

В рамках научной работы реализовал свой маленький компилятор некоторого языка. Не буду грузить подробностями. Собственно задача гененрировать во время исполнения проекта фрагменты кода на С++. Работаю в среде Borland C++ Builder 6. Сейчас у меня уже гененрируется текст модуля (*.cpp + *.h). Но для того, чтобы он "подхватился", нужно пересобирать проект. Логично.. компиляция идет только во время запуска. Так вот как бы мне перекомпилировать это отдельный модуль уже во время выполнения? Может быть как-нибудь программно создавать *.dll и ее подгружать программно (Из гененрируемого модуля мне нужно подгружать только 2-3 функции и все, поэтому для меня вполне годится, если они будут завернуты в *.dll), но тогда вопрос как программно создавать *.dll ... Мои поиски в Google пока ни какого результата не дали... Или то, что я хочу, из области фантастики, и эту проблему обходят как-то совсем по-другому..?

Буду рад любым содержательным советам! Спасибо.
 
N

Nelson

Решение найдено!


Ответ с соседнего форума пользователь AntonChik

1. если ты генеришь код(с++), то тебе не обойтись без компилятора(!).
2. как я понял твоя программа не создает еще одно приложение, а генерирует модуль, который должна подхватить и "впитать" в себя. то бишь перекомпиляцию проекта не избежать.
с командной строки это можно сделать так:
bcb.exe /b Project.bpr
ну естесственно надо успеть завершить родительский процесс, либо компилить во временный exe-шник, а потом переименовывать и запускать. в общем тут варианты.
3. если ты хочешь скомпилировать свой сгенерированный модуль в dll, то для этого можно создать шаблон проекта, к которому добавлять свой сгенерированный модуль, ну и соответственно компилить dll.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!