Мне нужен портативный кроссплатформенный способ загрузки текстовых файлов во время компиляции. Мое приложение представляет собой виртуальную машину для домена, специфицированного для c языка, который я написал, поэтому мне нужно внедрить файлы базового класса. Они не должны быть загружены во время выполнения. Возможно ли это с C / C ++ без необходимости использования сторонней библиотеки или инструмента.
Предположим, файл main.cpp
выглядит следующим образом.
// load some core script
static constexpr std::string coreScript = LOAD_FILE("/path/to/lib/com/example/Person.mylang");
// main()
int main()
{
// some setup function that returns an instance of the FFI
MyLangEnv *env = mlvm_setup(); // some setup function that returns an instance of the FFI
// register native Person type
env->native()->type("com/example/Person", &Person::construct)
->property("firstName", &Person::firstName)
->property("lastName", &Person::lastName)
->property("age", &Person::age)
->method("speak", &Person::speak);
;
// run script so that the class is exposed to runtime
env->run()->mylangScript(coreScript);
// now person can be instantiated
Person *person = env->make()->object("com/example/Person", "Jane", "Doe", 22);
assert(person);
// set global
env->set()->global("person", person);
// eval
env->eval("print(person.firstName)"); // outputs "Jane"
// call speak()
env->call()->property(person, "speak");
// run gc() and destroy environment
env->kill();
return 0;
}
Я бы хотел, чтобы скрипт работал в сюда. Возможно ли это в C ++ таким образом, который также будет работать с Objective-C ++?