包含ChaiScript的基本要點
-
將ChaiScript添加到現(xiàn)有的VC工程中
1). 將ChaiScript的include目錄添加到工程的包含目錄中
2). 在工程源文件中#include <chaiscript/chaiscript.hpp>
3). 實例化ChaiScript引擎
using namespace chaiscript;
ChaiScript chai;
//或者直接
chaiscript::ChaiScript chai;```
2. **ChaiScript腳本與C++互相調(diào)用**
1). **在C++中調(diào)用/執(zhí)行ChaiScript代碼**
- 在C++代碼中編寫并且執(zhí)行ChaiScript代碼`chai("var scripti = 15");`
- 是直接調(diào)用ChaiScript腳本文件來執(zhí)行
//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++中調(diào)用ChaiScript中定義的函數(shù)**
與使用變量一樣,關(guān)聯(lián)腳本的函數(shù)到C++中定義的函數(shù)名。
std::function<double()> TestChai = chai.eval<std::function<double()> >("TestChai:)
double d = TestChai();```
4). 在腳本中調(diào)用C++函數(shù)/d對象
要在腳本中使用C++對象或者使用C++函數(shù)要先把函數(shù)注冊到ChaiScript引擎中。
注冊對象的語法:
System system;
chai.add(var(&system),"system");
//注冊函數(shù)
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++的函數(shù)注冊到引擎中:
double function(int i, double j){
return i * j;
}
chai.add(chaiscript::fun(&function),"function");
//使用
chai("if (value > 1){
out = 1/function(2,value)}");```