假设我在执行时生成一个 C 程序:
source = "int add_x_y(int x, int y){ return x + y; }";
source_size = 42;
我想要以下功能:
void* compile(char* source, int source_size);
这样:
int (*f)(int,int) = compile(source, source_size);
printf("%d\n",f(2,3));
输出:
5
并且 compile
不能依赖于外部工具(编译器),因为我想在 emscripten (将 C 程序转换为 .js 文件)中使用它。
这可能吗?
最佳答案
其他人可能可以比我更好地填写一些细节,但如果您不介意调用 GCC 或链接到它,它应该是可行的。如果将代码写入文件,则将该文件编译为共享库 (.SO)。从这里开始,加载共享库并获取所需符号的地址就很简单了。
关于c - 如何在执行时编译一段C代码,并获得对应函数的指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26392477/