Итак, я смотрел это видео месяца назад, где Epic продемонстрировала свои новые функции разработчика Unreal Engine 4. Извините, я не смог найти видео, но я попытаюсь изо всех сил объяснить.C++ компиляция во время выполнения
Единственной особенностью, которая привлекла мое внимание, была модификация и компиляция C + + «на лету». Парень показал, как он играл в игру в редакторе и модифицировал некоторые переменные в коде, сохранил его, и изменения сразу отразились в игре.
Так что я задавался вопросом ... Как добиться этого? В настоящее время я могу думать о двух возможных способах: либо обман, и это был только «c-стиль» - язык сценариев, а не сам C++ или его общая библиотека (читая: DLL).
Вот что-то я взбитыми попробовать себя (упрощенно):
for(;;)
{
Move DLL from build directory to execution directory
Link to DLL using LoadLibrary()/dlopen() and fetch a pointer to function "foo()" from it
for(;;)
{
Call the function "foo()" found in the dll
Check the source of the dll for changes
If it has changed, attempt to compile
On succesfull compile, break
}
Unload DLL with FreeLibrary()/dlclose()
}
Теперь, кажется, работает, но я не могу не задаться вопросом, что другие методы есть? И как бы этот подход мог сравниться с использованием языка сценариев?
редактировать:https://www.youtube.com/watch?v=MOvfn1p92_8&t=10m0s
Ваш вопрос немного расплывчатый.Можете ли вы сделать это более конкретным, с акцентом на фактическую проблему, которую вы пытаетесь решить? –
Это довольно круто; Интересно, можете ли вы что-то сделать с компиляцией JIT 'clang'? –
C: Полный справочник Schildt (или был он C++?) Имел образец проекта, который был интерпретатором C (++?). Возможно, что-то вроде этого, или включение миниатюрного, но реального компилятора с программным обеспечением. –