首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

lua脚本请问

2013-10-11 
lua脚本请教 我在linux行安装了lua-5.1.4,luasql-2.1.1。在test.lua中代码:local luasql require luasql

lua脚本请教
 我在linux行安装了lua-5.1.4,luasql-2.1.1。在test.lua中代码:

   local luasql = require "luasql.mysql"
   print("hello world");

如果单独的执行lua test.lua ,没有任何的错误,会输出:hello world。
但是在C文件中调用这个test.lua,就会提示错误:
lua_pcall failed:error loading module 'luasql.mysql' from file '/usr/local/lib/lua/5.1/luasql/mysql.so':
        /usr/local/lib/lua/5.1/luasql/mysql.so: undefined symbol: lua_pushlstring
C文件中的代码也很简单

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
int main(int argc,char**argv)
{
int ret = 0 ;

    lua_State * l = luaL_newstate() ;        //创建lua运行环境
    if ( l == NULL ) {
printf("luaL_newstat() failed\n");
     return 1;
     } 
    luaL_openlibs(l);
    
    ret = luaL_loadfile(l,"test.lua") ;      //加载lua脚本文件
    if ( ret != 0 )  {
printf("luaL_newstat() failed\n");
     return 1;
     } 
     ret = lua_pcall(l,0,0,0) ;
    if ( ret != 0 ) printf("lua_pcall failed:%s\n",lua_tostring(l,-1)) ;
    lua_close(l) ;                     //释放lua运行环境
    return 0 ;
}
C文件的编译命令是:gcc -o test test.c -I/usr/local/lua/include/ -L/usr/local/lua/lib/ /usr/local/lua/lib/liblua.a -llua -lm -ldl 
这是咋回事呀??先谢过各位了。 C?LUA
[解决办法]
把#include <lauxlib.h>改为#include <luaxlib.h>

引用:
 我在linux行安装了lua-5.1.4,luasql-2.1.1。在test.lua中代码:

   local luasql = require "luasql.mysql"
   print("hello world");

如果单独的执行lua test.lua ,没有任何的错误,会输出:hello world。
但是在C文件中调用这个test.lua,就会提示错误:
lua_pcall failed:error loading module 'luasql.mysql' from file '/usr/local/lib/lua/5.1/luasql/mysql.so':
        /usr/local/lib/lua/5.1/luasql/mysql.so: undefined symbol: lua_pushlstring
C文件中的代码也很简单

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>
int main(int argc,char**argv)
{
int ret = 0 ;

    lua_State * l = luaL_newstate() ;        //创建lua运行环境
    if ( l == NULL ) {
printf("luaL_newstat() failed\n");
     return 1;
     } 
    luaL_openlibs(l);
    
    ret = luaL_loadfile(l,"test.lua") ;      //加载lua脚本文件
    if ( ret != 0 )  {
printf("luaL_newstat() failed\n");
     return 1;
     } 
     ret = lua_pcall(l,0,0,0) ;
    if ( ret != 0 ) printf("lua_pcall failed:%s\n",lua_tostring(l,-1)) ;
    lua_close(l) ;                     //释放lua运行环境
    return 0 ;
}
C文件的编译命令是:gcc -o test test.c -I/usr/local/lua/include/ -L/usr/local/lua/lib/ /usr/local/lua/lib/liblua.a -llua -lm -ldl 
这是咋回事呀??先谢过各位了。

[解决办法]
LUA_CPATH, LUA_PATH 没指定.
[解决办法]
你没链接liblua.a的

热点排行