вторник, 15 апреля 2008 г.

Экспортирование C/C++ функций в luabind

Чтобы привязать 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),
];

Комментариев нет: