luaL_openlibs的隐式声明

luaL_openlibs的隐式声明,第1张

概述我正在编写一个将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 我正在编写一个将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库?
为什么我会收到此警告?我在lauxlib.h中看到了luaL_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,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;}

这是Lua部分:

io.write("lua_test.lua -- will generate schedule\n")io.write("Wizard life is " .. clife .. "\n")schedule = ""ctime = ttime - atimeif 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 .. ",n]\n"endio.write("Returning " .. schedule .. "\n");return schedule
解决方法 AFAIK&在我的5.1.4安装中,该函数位于lualib.h中,而不是lauxlib.h中 总结

以上是内存溢出为你收集整理的luaL_openlibs的隐式声明全部内容,希望文章能够帮你解决luaL_openlibs的隐式声明所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1247682.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-07
下一篇2022-06-07

发表评论

登录后才能评论

评论列表(0条)

    保存