包含ChaiScript的基本要点
-
将ChaiScript添加到现有的VC工程中
1). 将ChaiScript的include目录添加到工程的包含目录中
2). 在工程源文件中#include <chaiscript/chaiscript.hpp>
3). 实例化ChaiScript引擎
using namespace chaiscript;
ChaiScript chai;
//或者直接
chaiscript::ChaiScript chai;```
2. **ChaiScript脚本与C++互相调用**
1). **在C++中调用/执行ChaiScript代码**
- 在C++代码中编写并且执行ChaiScript代码`chai("var scripti = 15");`
- 是直接调用ChaiScript脚本文件来执行
//helloworld.chai
print("hello chaiscript world")
//控制台程序
include <iostream>
include <chaiscript/chaiscript.hpp>
int main(){
using namespace chaiscript;
ChaiScript chai;
chai.eval_file("helloworld.chai");
return 0;
}```
2).在C++中使用脚本的变量(对象)
//添加一个新的变量
chai("var scripti = 15");
//操作system的变量
//int &表示int引用类型
//操作这个引用就是在操作这个引用所引用的变量。
int &scripti = chai.eval<int &>("scripti");
scripti *= 2;
std::cout << "scripti (updated): " << scripti << std::endl;
chai("print(\"Scripti from chai: \"+to_string(scripti))");```
在C++中操作ChaiScript中变量的方法,使用引用。
3). **在C++中调用ChaiScript中定义的函数**
与使用变量一样,关联脚本的函数到C++中定义的函数名。
std::function<double()> TestChai = chai.eval<std::function<double()> >("TestChai:)
double d = TestChai();```
4). 在脚本中调用C++函数/d对象
要在脚本中使用C++对象或者使用C++函数要先把函数注册到ChaiScript引擎中。
注册对象的语法:
System system;
chai.add(var(&system),"system");
//注册函数
chai.add(fun(&MyClass::function),"method");```
比如这样,首先是将C++中的变量注册到引擎中:
double value = -2;
double out;
chai.add(chaiscript::var(&value),"value");
chai.add(chaiscript::var(&out),"out");```
下面是将C++的函数注册到引擎中:
double function(int i, double j){
return i * j;
}
chai.add(chaiscript::fun(&function),"function");
//使用
chai("if (value > 1){
out = 1/function(2,value)}");```
网友评论