gpt4 book ai didi

c - 如何构建嵌入 Lua 的 C 程序

转载 作者:太空狗 更新时间:2023-10-29 15:55:19 25 4
gpt4 key购买 nike

我正在学习如何将 Lua 嵌入到 C 中,并从一个简单的示例开始:

演示.c

#include <stdio.h>
#include <string.h>
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>

int main (void) {
char buff[256];
int error;
lua_State *L = luaL_newstate(); /* opens Lua */
luaopen_base(L); /* opens the basic library */
luaopen_table(L); /* opens the table library */
luaopen_io(L); /* opens the I/O library */
luaopen_string(L); /* opens the string lib. */
luaopen_math(L); /* opens the math lib. */

while (fgets(buff, sizeof(buff), stdin) != NULL) {
error = luaL_loadbuffer(L, buff, strlen(buff), "line") ||
lua_pcall(L, 0, 0, 0);
if (error) {
fprintf(stderr, "%s", lua_tostring(L, -1));
lua_pop(L, 1); /* pop error message from the stack */
}
}

lua_close(L);
return 0;
}

======

我的本​​地环境:

evans@master:~/codebase/demo/lua$ sudo dpkg -L liblua5.2-dev
/.
/usr
/usr/include
/usr/include/lua5.2
/usr/include/lua5.2/lua.h
/usr/include/lua5.2/luaconf.h
/usr/include/lua5.2/lualib.h
/usr/include/lua5.2/lauxlib.h
/usr/include/lua5.2/lua.hpp
/usr/lib
/usr/lib/i386-linux-gnu
/usr/lib/i386-linux-gnu/liblua5.2.a
/usr/lib/i386-linux-gnu/pkgconfig
/usr/lib/i386-linux-gnu/pkgconfig/lua5.2.pc
/usr/share
/usr/share/doc
/usr/share/doc/liblua5.2-dev
/usr/share/doc/liblua5.2-dev/copyright
/usr/lib/i386-linux-gnu/liblua5.2.so

然后:

gcc -o demo demo.c -llua5.2
demo.c:3:17: fatal error: lua.h: No such file or directory
compilation terminated.

我也试过 -llua5, -llua 都失败了。

======最后我找到了解决方案:

gcc -o demo demo.c -I/usr/include/lua5.2 /usr/lib/i386-linux-gnu/liblua5.2.a -lm

但我不明白为什么我不能像往常一样这样做。

最佳答案

您需要指定头文件的实际路径:

#include <lua5.2/lua.h>

或使用 -I/usr/include/lua5.2 ,就像你已经想通的那样。当您尝试包含 <lua.h> , 编译器只在 /usr/include/lua.h 查找它(以及其他一些在这里无关紧要的地方)。

关于c - 如何构建嵌入 Lua 的 C 程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16642059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com