Скажем, у меня есть простой, автономный код для некоторой функции в простом C только с POD типы.
Код хранится в std::string
,
Как я могу конкретно скомпилировать код во время выполнения и получить вызываемый объект?
Мне действительно нужна собственная, эффективная компиляция, а не что-либо, основанное на виртуальных машинах.
Спасибо.
C ++ обычно компилируется заранее, как в случае с реализацией Microsoft. Для этого вам потребуется установленная цепочка инструментов, и в этом случае это можно назвать другим процессом, а затем что-то сделать с результатом. Если вы хотите распространять набор инструментов, это будет зависеть от условий лицензии. Вы можете создать библиотеку DLL и загрузить ее, рискуя ошибками в этом сбое вашего процесса, или создать EXE-файл и взаимодействовать другими способами.
Обратите внимание, что в любом случае трудно обеспечить защиту от вредоносного кода, и многие другие платформы будут запрещать его.
Есть, однако, некоторые C ++ переводчики вокруг, хотя я не использовал ни одного. Это полностью отдельные реализации от Microsoft, которые вы можете посмотреть. Хотя интегрировать их, скорее всего, будет непросто.
Это одна из причин, по которой программы на C и C ++ часто используют другой язык для сценариев времени выполнения, например Lua, Python или многие другие.
Других решений пока нет …