- Memanggil fungsi C++ dari dalam LUA
- Memanggil fungsi LUA dari dalam C++
1. Buatlah project console di codeblocks.
2. Kemudian link kan Lua library ke dalam project.
3. Setelah itu ganti isi main.cpp dengan source code dibawah:
extern "C" { #include <lualib.h> #include <lauxlib.h> } #include <iostream> #include <string> using namespace std; // test.tampilkan(string) static int tampilkan(lua_State *s) { // ambil parameter yang dimasukan Lua const char *str = luaL_checkstring(s, 1); cout << str << endl; cout << "Fungsi C++ berhasil dipanggil Lua.." << endl; lua_pushboolean(s, true); // return true return 1; // 1 adalah jumlah return } int main() { // opens Lua lua_State *L = luaL_newstate(); // opens the standard libraries luaL_openlibs(L); // daftar fungsi-fungsi C++ yg bisa dipanggil Lua static luaL_Reg const callbacks[] = { { "tampilkan",&tampilkan }, { NULL, NULL } }; luaL_register(L, "test", callbacks); // test adalah nama custom library // sehingga di Lua bisa dipanggil: // test.tampilkan('Hello World!') lua_pop(L, 1); // kosongkan stack // buka file contoh.lua // di contoh.lua akan dipanggil test.tampilkan('Hello World!') luaL_loadfile(L, "contoh.lua"); lua_pcall(L, 0, 0, 0); // panggil fungsi Lua lua_getglobal(L, "fungsi_lua_tampilkan"); // eksekusi fungsi_lua_tampilkan lua_pcall(L, 0, 0, 0); // panggil fungsi_lua_penambahan(nilai1,nilai2) lua_getglobal(L, "fungsi_lua_penambahan"); lua_pushnumber(L, 1); // nilai1 == 1 lua_pushnumber(L, 2); // nilai2 == 2 // eksekusi dengan 2 arguments dan 1 return lua_pcall(L, 2, 1, 0); // dapatkan hasil penambahan 1+2 double hasil = lua_tonumber(L, -1); lua_pop(L, 1); // pop returned value cout << "1 + 2 = " << hasil << endl; // tutup Lua lua_close(L); return 0; }
4. Buatlah sebuah file teks bernama contoh.lua dan copy paste code dibawah:
function fungsi_lua_tampilkan() test.tampilkan('Mencoba memanggil fungsi C++'); end function fungsi_lua_penambahan(nilai1,nilai2) return (nilai1 + nilai2) end
5. Kompile dan run. Outputnya adalah:
Mencoba memanggil fungsi C++ Fungsi C++ berhasil dipanggil Lua.. 1 + 2 = 3
Tidak ada komentar:
Posting Komentar