LuaとC/C の相互運用とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > LuaとC/C の相互運用の意味・解説 

LuaとC/C++の相互運用

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/05/17 08:04 UTC 版)

Lua」の記事における「LuaとC/C++の相互運用」の解説

LuaにはC言語向けの相互運用API用意されている。LuaからC/C++関数呼び出すためには以下の方法用いる。下記コードC/C++関数Lua VM登録しLuaスクリプト側から呼び出している。 #include #include #include #include int my_add(lua_State* L) { const int x = (int)lua_tonumber(L, 1); // 第1引数取得const int y = (int)lua_tonumber(L, 2); // 第2引数取得。 lua_settop(L, 0); // スタッククリアconst int ret = x + y; // C/C++ 側での演算。 lua_pushnumber(L, ret); // 返却値プッシュreturn 1;}int main(int argc, char* argv[]) { lua_State* L = luaL_newstate(); // Lua VM初期化。 luaL_openlibs(L); // Lua標準ライブラリ使えるようにする。 lua_register(L, "my_add", my_add); // Lua VMC/C++ 関数を登録。 // my_add 関数呼び出す Lua スクリプト実行。 if (luaL_dostring(L, "print(my_add(5, 3))")) { lua_close(L); // Lua VM閉じる。 return EXIT_FAILURE; // エラー終了。 } lua_close(L); return EXIT_SUCCESS;} 逆にC/C++からLua関数呼び出す際にもスタック操作が必要となる。 #include #include #include #include int main(int argc, char* argv[]) { lua_State* L = luaL_newstate(); // Lua VM初期化。 // add_func 関数定義する Lua スクリプト実行。 if (luaL_dostring(L, "function add_func(x, y) return x + y end")) { lua_close(L); // Lua VM閉じる。 return EXIT_FAILURE; // エラー終了。 } lua_getglobal(L, "add_func"); // Luaグローバルオブジェクトである「add_func」を取得しスタックに積む。 lua_pushinteger(L, 5); // 整数値の「5」を Lua スタックプッシュ。 lua_pushinteger(L, 3); // 整数値の「3」を Lua スタックプッシュ。 lua_call(L, 2, 1); // Lua 側で実装した add_func 関数呼び出す。引数の数は2、結果の数は1。 printf("Result: %d\n", lua_tointeger(L, -1)); // 結果表示。 lua_close(L); return EXIT_SUCCESS;}

※この「LuaとC/C++の相互運用」の解説は、「Lua」の解説の一部です。
「LuaとC/C++の相互運用」を含む「Lua」の記事については、「Lua」の概要を参照ください。

ウィキペディア小見出し辞書の「LuaとC/C の相互運用」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「LuaとC/C の相互運用」の関連用語

1
6% |||||

LuaとC/C の相互運用のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



LuaとC/C の相互運用のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのLua (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS