C luaL_openlibs的隐式声明

C luaL_openlibs的隐式声明,c,lua,C,Lua,我正在编写一个将Lua嵌入C程序的简单测试 我在Windows/Mingw和Linux上也有同样的问题。 以下是我在Linux上使用的gcc命令: gcc -Wall -o test_lua lua_test.c -I/usr/include/lua5.1 -llua5.1 在Windows上: gcc -Wall -o test_lua.exe lua_test.c -llua5.1 在这两种情况下,我都有以下警告: warning: implicit declaration of fun

我正在编写一个将Lua嵌入C程序的简单测试

我在Windows/Mingw和Linux上也有同样的问题。 以下是我在Linux上使用的gcc命令:

gcc -Wall -o test_lua lua_test.c -I/usr/include/lua5.1 -llua5.1
在Windows上:

gcc -Wall -o test_lua.exe lua_test.c -llua5.1
在这两种情况下,我都有以下警告:

warning: implicit declaration of function 
              'luaL_openlibs' [-Wimplicit-function-declaration]
这个程序可以运行,但也许我没有在其中使用任何标准的Lua libs? 为什么我会收到这个警告?我在
lauxlib.h
中看到了
luaL\u openLibs
的定义

以下是C部分:

#include <lua.h>
#include <lauxlib.h>
#include <stdlib.h>
#include <stdio.h>

int main(int argc, char *argv[]) {

  int status;
  lua_State *L;

  L = luaL_newstate();

  // Init lua
  luaL_openlibs(L);

  // Load script
  status = luaL_loadfile(L,"lua_test.lua");
  if (status) {
    fprintf(stderr,"Couldn't load file\n");
    exit(1);
  }

  // Push data
  lua_pushnumber(L, 5000);
  lua_setglobal(L, "clife");
  lua_pushnumber(L, 6000);
  lua_setglobal(L, "ttime");
  lua_pushnumber(L, 3000);
  lua_setglobal(L, "atime");

  // Run script
  int result = lua_pcall(L, 0, LUA_MULTRET, 0);
  if (result) {
    fprintf(stderr,"Failed to run script: %s\n", lua_tostring(L,-1));
    exit(1);
  }

  // Value at top of the stack is the result
  const char *schedule = lua_tostring(L,-1);

  fprintf(stdout,"Computed schedule is: %s\n", schedule);

  // Close lua
  lua_pop(L, 1);
  lua_close(L);

  return 0;

}

AFAIK&在我的5.1.4安装中,函数驻留在lualib.h中,而不是lauxlib.h

可以是ifdef块中定义的luaL_openlibs


使用带有gcc的
-E
在预处理后获取源代码。管Grep.

似乎是它最后的安息之地;现在是5.3,这仍然是事实。
io.write("lua_test.lua -- will generate schedule\n")

io.write("Wizard life is " .. clife .. "\n")

schedule = ""
ctime = ttime - atime
if clife > 4500 then
   schedule = schedule .. "[" .. ctime .. ",p]"
   schedule = schedule .. "[" .. ctime+500 .. ",a]"
   schedule = schedule .. "[" .. ctime+1000 .. ",i]"
   schedule = schedule .. "[" .. ctime+1500 .. ",n]\n"
else
   schedule = schedule .. "[" .. ctime .. ",d]"
   schedule = schedule .. "[" .. ctime+500 .. ",r]"
   schedule = schedule .. "[" .. ctime+1000 .. ",a]"
   schedule = schedule .. "[" .. ctime+1500 .. ",i]"
   schedule = schedule .. "[" .. ctime+1500 .. ",n]\n"
end

io.write("Returning " .. schedule .. "\n");

return schedule