2
因此,我有一個.so格式的編譯C文件,並試圖在Lua中使用它。這兩個文件的代碼是:Lua liblua5.1.so無法打開共享對象文件
-- luatest.lua:
require("power")
print("Enter a number: ")
local num = tonumber(io.read())
local n = create(num)
square(n)
cube(n)
nprint(n)
// luatest.c compiled to power.so
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
#include <stdlib.h>
static int createStruct(lua_State *L);
static int isquare(lua_State *L);
static int icube(lua_State *L);
static int nprint(lua_State *L);
typedef struct numbers {
float number;
float square;
float cube;
} numbers;
int luaopen_power(lua_State *L){
lua_register(L, "create", createStruct);
lua_register(L, "square", isquare);
lua_register(L,"cube",icube);
lua_register(L, "nprint", nprint);
return 0;
}
static int createStruct(lua_State *L){
// Code here
}
static int isquare(lua_State *L){
// Code here
}
static int icube(lua_State *L){
// Code here
}
static int nprint(lua_State *L){
// Code here
}
C代碼編譯得很好。但是,當我嘗試做:
cd <directory>
lua luatest.lua
我得到以下錯誤:
lua: error loading module 'power' from file './power.so':
liblua5.1.so: cannot open shared object file: No such file or directory
stack traceback:
[C]: ?
[C]: in function 'require'
luatest.lua:3: in main chunk
[C]: ?
我不知道作爲./power.so應該存在什麼是錯的。
我在openSUSE 64bit上遇到這個錯誤,但是這個確切的代碼在OSX上正常工作。
任何對此的見解都會很棒,我似乎無法在任何地方找到其他人。
對於這個是有用的,你應該添加刪除爲什麼'-llua5.1'解決您的問題。否則它就沒有任何意義 - 有人會懷疑,你正在編譯C lua模塊,爲什麼你不想鏈接到lua庫? – greatwolf 2012-01-16 05:17:10
您應該將解決方案作爲答案發布並接受它。它會將問題標記爲已回答,並且可以讓人們更輕鬆地解決相同的問題以找到解決方案。 – jpjacobs 2012-01-16 07:55:49