Lua言語

このページは

  • とりあえず、Windowsで静的リンクした際のサンプルを備忘録として書いていく。

C++ホストとLuaスクリプトの連携

C++ホストからLuaスクリプトを実行

  • main.cpp
    extern "C" {
        #include "lua.h"
        #include "lualib.h"
        #include "lauxlib.h"
    }
    void main()
    {
        lua_State *L;
    
        L = lua_open();
        luaopen_base(L);
    
        luaL_dofile(L, "hello.lua"); //Lua5.x
    
        lua_close(L);
        return ;
    }
  • hello.lua
    print("HelloWorld!");

C++ホストからLuaスクリプトを実行し、LuaからC++の関数(厳密にはC)を呼び出す

  • main.cpp
    #include <windows.h>
    
    extern "C" {
        #include "lua.h"
        #include "lualib.h"
        #include "lauxlib.h"
    }
    
    int callMsgBox (lua_State *L);
    
    void main() {
        lua_State *L;
    
        L = luaL_newstate();
    
        // 関数を登録
        lua_register(L, "MSGBOX", callMsgBox);
    
        lua_pushcfunction(L, luaopen_base);
    
        lua_call(L, 0, 0);
    
        //Luaファイルを読み込み&実行
        luaL_dofile(L, "callfunc.lua");
    
        lua_close(L);
        return;
    }
    
    int callMsgBox (lua_State *L) {
        int n = lua_gettop(L);
        if (n == 0) {
            MessageBoxA(NULL, "TEST", "Argment is Empty", MB_OK);
        } else if (n == 1) {
            MessageBoxA(NULL, "TEST", lua_tostring(L, 1), MB_OK);
        } else {
            MessageBoxA(NULL, "TEST", "Argment is to meny", MB_OK);
        }
        return 0;
    }
  • callfunc.lua
    MSGBOX("登録した関数をよんでみるー")


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2007-11-05 (月) 00:19:31 (4311d)