Lua 连接C动态库 .so文件 求助
lua吧
全部回复
仅看楼主
level 4
fengshuang08 楼主
cc -o mmath.so -fPIC -shared m_math.c
编译动态库C
然后使用
require "mmath"
报错如下:
require "mmath"
stdin:1: module 'mmath' not found:
no field package.preload['mmath']
no file '/usr/local/share/lua/5.3/mmath.lua'
no file '/usr/local/share/lua/5.3/mmath/init.lua'
no file '/usr/local/lib/lua/5.3/mmath.lua'
no file '/usr/local/lib/lua/5.3/mmath/init.lua'
no file './mmath.lua'
no file './mmath/init.lua'
no file ':/home/xiafeng/xiafeng/lua'
stack traceback:
[C]: in function 'require'
stdin:1: in main chunk
[C]: in ?
求解 ,何故?
2016年04月07日 06点04分 1
level 4
fengshuang08 楼主
.c文件如下:
#include <stdio.h>
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
static int l_add(lua_State *L)
{
int x,y,z=0;
x = luaL_checknumber(L,1);
y = luaL_checknumber(L,2);
z = x + y;
luaL_pushnumber(L,z);
return 1;
}
static const struct luaL_Reg mylib[] = {
{"c_add",l_add},//lua name = C function name
{NULL,NULL}
};
int luaopen_mmath(lua_State* L) //register C function
{
luaL_register(L,"mmath",mylib);
return 1;
}
2016年04月07日 06点04分 2
level 11
首先这个是,文件无法找到的问题,你需要把so文件放在那个执行lua的目录里,或者在package.path里加上so的路径[滑稽]我应该没有记错吧
2016年04月07日 10点04分 3
cpath[滑稽]记错了,是cpath
2016年04月07日 10点04分
@协调意志_Tox 我放在~/.bahsrc下设置 LUA_CPATH=$LUA_CPATH:... ...是.so文件的路径,这样对么
2016年04月08日 01点04分
@协调意志_Tox export LUA_CPATH=$LUA_CPATH:
2016年04月08日 01点04分
@协调意志_Tox 设置好 还是一样的报错 不知为何
2016年04月08日 01点04分
1