lua 5.3 C関数ライブラリ
私たちはluaのためにC言語関数ライブラリを書く方法を最初から話します.
まずソースコードをダウンロードします.ここで選んだのは5.3.5バージョンのソースコードです.次にmingw 64コンパイルツールをインストールします.
luaソースコードを解凍し、ソースコードディレクトリに入り、コマンドラインを開き、
コマンド
私たちが使っているファイルは基本的に
コンパイルするコマンド
上記のコマンドが終了すると、
なお、
まずソースコードをダウンロードします.ここで選んだのは5.3.5バージョンのソースコードです.次にmingw 64コンパイルツールをインストールします.
luaソースコードを解凍し、ソースコードディレクトリに入り、コマンドラインを開き、
make mingw
を入力します.コマンド
make mingw
の実行が完了すると、一連の.o
、.a
などのファイルが得られます.また、luac
、lua
、lua53.dll
またはlua53.so
(あなたのシステムによっては、私がここで使っているwindowsシステムなのでdllです).私たちが使っているファイルは基本的に
liblua.a
というファイルです.
#include
#include
#include
#include
// windows linux
#ifndef LUA_LIB_API
#ifdef _WIN32
#define LUA_LIB_API __declspec(dllexport)
#else
#define LUA_LIB_API __attribute__ ((visibility ("default")))
#endif
#endif
// sin
static int l_sin (lua_State * L) {
double d = luaL_checknumber(L, 1);
lua_pushnumber(L, sin(d));
return 1;
}
//
static const struct luaL_Reg mylib[] = {
{"lsin", l_sin},
{NULL, NULL}
};
LUA_LIB_API int luaopen_mylib (lua_State *L) {
// table
lua_newtable(L);
luaL_setfuncs(L, mylib, 0);
return 1;
}
コンパイルするコマンド
gcc .\mylib.c liblua.a -I E:\libs\lua-5.3.5\src -fPIC -shared -o mylib.dll -Wall
を入力します.このうち-I
の後ろにluaソースコードがあります.便宜上、liblua.a
ファイルを現在のディレクトリにコピーしました.上記のコマンドが終了すると、
mylib.dll
ファイルが得られ、このライブラリを正常に使用できます.E:\lua>lua
Lua 5.3.5 Copyright (C) 1994-2018 Lua.org, PUC-Rio
> mylib = require "mylib"
> mylib.lsin(30)
-0.98803162409286
>
なお、
luaopen_mylib
下線の後ろの部分はファイル名と一致しなければならない.luaopen_mylib
はmylib.dll
またはmylib.so
に対応する.