Чтобы привязать C/C++ функцию к lua используйте luabind::def фунцию. Например, давайте создадим простые функции: сложения двух чисел и вывода сообщения Hello World и привяжем их к lua:
using namespace std;
using namespace luabind;
void HelloWorld()
{
cout << "\n[C++]: Hello World!" << endl;
}
int add(int a, int b)
{
return a+b;
}
module(pL)
[
def("HelloWorld", &HelloWorld),
def("add", &add)
];
Теперь в скриптах lua можно вызывать эти функции:
print("[lua]: Вызов функции C++ HelloWorld()")
HelloWorld()
print("\n[lua]: Вызов функции C++ add()")
a=10
b=5
print ("\n[lua]: "..a.." + "..b.." = "..add(a, b))
После выполнения скрипта получим:
[lua]: [lua]: Вызов функции C++ HelloWorld()
[C++]: HelloWorld!
[lua]: [lua]: Вызов функции C++ add()
[lua]: 10+5=15
Если у вас есть перегруженные функции, например:
int MyFunc(int a);
void MyFunc(double a);
то def будет иметь следующий вид:
module(pLua)
[
def("MyFunc", (int (*)(int)) &MyFunc),
def("MyFunc", (void (*)(double)) &MyFunc),
];
Комментариев нет:
Отправить комментарий