gpt4 book ai didi

c++ - 可以在 Lua 中加载 C++ dll 文件吗?

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

我需要在 Lua 中加载一个 DLL 文件来连接不同的 API。我知道可以加载 C 类型的 dll,但我拥有的是用 C++ 生成的 dll 文件。

生成这个库的代码(在 C++ 中)的形式是:

// MyAPI.h

namespace MyAPI
{
public class MyFirstClass
{
public:
MyFirstClass();
void performSomeMethod(int arg);
}
}

然后生成 dll 文件 MyAPI.dll。当我现在尝试在 Lua 中导入它时,使用:

require "MyAPI"

它立即给出错误:从文件“.\MyAPI.dll”加载模块“MyAPI”时出错:找不到指定的过程。我不明白这意味着什么,或者如何摆脱它。 C++ 库通常不能被 Lua 包含(即我应该编写另一个 C 包装器吗?)或者有没有办法做到这一点?

最佳答案

是的,这是可以做到的。公开一个 C 函数加载器 luaopen_MyAPI,您可以在其中调用使用任何类型的 C++ Lua Wrapper 的函数,例如 LuaBridge , LuaBind或其他人。如果您在 C++ 中的调用不符合绑定(bind)规则,例如生命周期管理、按值传递对象等,您可能需要将类包装到可绑定(bind)类中。

有关示例,请参阅 pugilua

  • pugilua_lib.h - 模块加载器 API
  • pugilua_lib.cpp - 包装类和 LuaBridge 绑定(bind)
  • pugilua.cpp - 从模块加载器调用绑定(bind)

关于c++ - 可以在 Lua 中加载 C++ dll 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20288621/

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