gpt4 book ai didi

c++ - 使用 require(..) 或 dofile(..) 在 Lua 中加载 .dll

转载 作者:搜寻专家 更新时间:2023-10-31 01:42:51 26 4
gpt4 key购买 nike

是否可以在 Lua 中加载 .dll 库?假设我有一个已编译的 .dll 文件,文件夹如下所示:

<folder>
|------test.lua
|------mylib.dll

我可以使用 require(..) 或 dofile(..) 在 lua 中使用 .dll 库吗?

此外,.dll 是否必须采用某种格式?如果可以的话,你能分享一下我可以编译成 lua 可识别的 .dll 的 C 代码模板

谢谢!

最佳答案

根据您要执行的操作,您可以在此处进行一些选择。 Lua 的“require”将加载 DLL 并期望出现一个函数:

int luaopen_XXXXX (lua_State* L)

DLL 必须命名以匹配“XXXXX”部分,因此如果您编写了一个名为“sprite.dll”的模块,那么您需要创建一个名为 luaopen_sprite 的函数。

在此函数中,您可以使用 Lua“C”API 手动注册“C”函数,这允许它们从您的脚本中调用。请参阅 Lua 文档。

您也可以使用包装工具。我广泛使用了 SWIG。它会自动获取头文件并构建包含上述所有内容的 C 或 C++ 文件。

也可以使用 FFI(外部函数接口(interface))。它是一种直接调用 C 接口(interface)的方法,我相信它使用低级处理器特定的堆栈构造和 jmps/calls。

关于c++ - 使用 require(..) 或 dofile(..) 在 Lua 中加载 .dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26201653/

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