可利用黏液API



如何在我的应用程序中使用通过API来解释c++代码?

我希望它提供类似终端的交互方式,而不需要编译/运行可执行文件。假设我有一个hello world程序:

void main() {
    cout << "Hello world!" << endl;
}

我希望有API来执行char* = (program code)并获得char *output = "Hello world!"。谢谢。

p。类似于ch interpeter的例子:

/* File: embedch.c */
#include <stdio.h>
#include <embedch.h>
char *code = "
   int func(double x, int *a) { 
      printf("x = %f\n", x); 
      printf("a[1] in func=%d\n", a[1]);
      a[1] = 20; 
      return 30; 
   }";
int main () {
   ChInterp_t interp;
   double x = 10;
   int a[] = {1, 2, 3, 4, 5}, retval;
   Ch_Initialize(&interp, NULL);
   Ch_AppendRunScript(interp,code);
   Ch_CallFuncByName(interp, "func", &retval, x, a);
   printf("a[1] in main=%dn", a[1]);
   printf("retval = %dn", retval);
   Ch_End(interp);
}
}

最后有一个更好的答案:示例代码!见https://github.com/root-project/cling/blob/master/tools/demo/cling-demo.cpp

你的问题的答案是:不。无论编译代码还是解释代码,都接受代码并返回c++值或对象。这不是"字符串输入/字符串输出"之类的事情。有perl来做这个;-)这就是代码in, value out的样子:

// We could use a header, too...
interp.declare("int aGlobal;n");
cling::Value res; // Will hold the result of the expression evaluation.
interp.process("aGlobal;", &res);
std::cout << "aGlobal is " << res.getAs<long long>() << 'n';

很抱歉回复晚了!

通常的做法是: [cling$] #include "cling/Interpreter/Interpreter.h" [cling$] const char* someCode = "int i = 123;" [cling$] gCling->declare(someCode); [cling$] i // You will have i declared: (int) 123

API文档在:http://cling.web.cern.ch/cling/doxygen/classcling_1_1Interpreter.html

当然,你也可以在运行时中创建自己的"嵌套"解释器。(见上面的氧链接)

我希望它能帮助并回答问题,更多的使用示例你可以在test/文件夹下找到。Vassil

相关内容

  • 没有找到相关文章

最新更新