このライブラリを使うと C++ と Luaをうまく連携できます。 C++11/C++14に対応しているのでVisual Studio 2015/2017、Clang、GCCで動作します。
この lua_add関数を C++から呼び出すには 以下のように書きます。
#define SOL_CHECK_ARGUMENTS 1
#include
#include "sol.hpp"
#include
using namespace std;
int main(int, char*[]) {
// Luaの初期化
sol::state lua;
lua.open_libraries(sol::lib::base, sol::lib::package);
// Luaスクリプトファイルの読み込み
lua.script_file("sample.lua");
// Luaの関数を呼び出す
double ret = lua["lua_add"](12, 16);
// 結果の表示
cout
#include "sol.hpp"
#include
using namespace std;
int c_add(int x, int y) {
return x + y;
}
int main(int, char*[]) {
// Luaの初期化
sol::state lua;
lua.open_libraries(sol::lib::base, sol::lib::package);
lua["add"] = &c_add;
lua["add2"] = [](int x, int y) { return x + y; };
// Luaスクリプトファイルの読み込み
lua.script_file("sample.lua");
return 0;
}
Luaからこの二つの関数を呼び出すには以下のように書けばOKです。 Luaの変数の値を取得するにも簡単です
例えば以下のような Luaにmessage という変数に「Hello, world!」という文字列がある場合もメンバー関数のgetを使います。 この値をC++で取得するソースコードは以下のようになります。
#define SOL_CHECK_ARGUMENTS 1
#include
#include "sol.hpp"
#include
using namespace std;
int c_add(int x, int y) {
return x + y;
}
int main(int, char*[]) {
// Luaの初期化
sol::state lua;
lua.open_libraries(sol::lib::base, sol::lib::package);
// Luaスクリプトファイルの読み込み
lua.script_file("sample.lua");
auto message = lua["message"].get();
cout ();
double height = ret["height"].get();
std::cout (); でテーブルに入っている値を取り出す[/*][/list]