gpt4 book ai didi

lua - 在 Lua 中加载 C 模块

转载 作者:行者123 更新时间:2023-12-04 17:41:24 24 4
gpt4 key购买 nike

我正在尝试将示例 lproc 程序(在 Programming Lua,第 30 章中描述)加载到 Lua 中并以某种方式出错。我正在关注这个 - http://www.lua.org/pil/26.2.html将我的 c 模块放入 lua。以下是我已采取的步骤:

  • 我有一个 lproc.h 和 lproc.c(包含本书第 30 章中列出的函数)。我将 lproc.c 编译为 --- gcc -c lproc.c -DLUA-USERCONFIG=\"lproc.h\"
  • 我用 lproc.o 制作了一个库,名称相同。
  • 然后按照说明编译lua.c。我的头文件包含宏 LUA_EXTRALIBS 和方法声明。
  • 转到 Lua 解释器,它给出了以下错误:

  • > 需要“lproc”
    标准输入:1:未找到模块“lproc”:
    没有字段 package.preload['lproc']
    没有文件'./lproc.lua'
    没有文件'/opt/local/share/lua/5.1/lproc.lua'
    没有文件'/opt/local/share/lua/5.1/lproc/init.lua'
    没有文件'/opt/local/lib/lua/5.1/lproc.lua'
    没有文件'/opt/local/lib/lua/5.1/lproc/init.lua'
    没有文件'./lproc.so'
    没有文件'/opt/local/lib/lua/5.1/lproc.so'
    没有文件'/opt/local/lib/lua/5.1/loadall.so'
    堆栈回溯:
    [C]:在函数“要求”中
    标准输入:1:在主 block 中
    [C]: ?

    似乎模块没有注册,我需要从 Lua 做什么?时间很短,我正在做一些非常错误的事情,欢迎任何方向。

    谢谢,
    萨彦

    最佳答案

    最简单的方法是创建一个共享库并动态加载您的 C 模块。这种方式避免了重建 Lua 解释器。 http://www.tecgraf.puc-rio.br/~lhf/ftp/lua/ 中有几个例子和 http://www.tecgraf.puc-rio.br/~lhf/ftp/lua/install.html 中的解释和 http://lua-users.org/wiki/BuildingModules

    关于lua - 在 Lua 中加载 C 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3260858/

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