作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我需要在 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
关于c++ - 可以在 Lua 中加载 C++ dll 文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20288621/
我是一名优秀的程序员,十分优秀!