能够从lua 5.0.2加载用c++编写的lua 5.3.5 dll吗?

我正在制作一个游戏修改。可以使用lua代码编写插件。由于这是一个旧游戏,它使用的是lua 5.0.2。我需要一些更强大的功能,这些功能在lua中无法实现。因此,我想使用c++编写这些内容,将其编译为dll文件,并从lua中导入这些函数。

我正在使用最新的VS社区版进行c++开发。我没有找到5.0.2的源代码,因此我从VS构建了lua 5.3.5的源代码。 现在,使用require加载dll时,我得到了这个错误

error loading package `data\_lvl_pc\REMASTER\remaster_IO.dll' (data\_lvl_pc\REMASTER\remaster_IO.dll:1: `=' expected near `')

这个dll非常简单,用于测试dll的加载

#include "pch.h"
#include <lua.h>

int luaopen_remaster_IO(lua_State* L) {
    Beep(200, 200);
}

我不确定问题是否仅仅是使用5.3.5源代码构建的dll,而游戏在5.0.2上运行,或者我在dll代码中做错了什么。

谢谢您的帮助:D

点赞
用户734069
用户734069

在应用程序使用 Lua 5.0 的情况下,使用 Lua 5.3 构建的 DLL 在加载时会出现问题。为了使应用程序和 DLL 与 Lua 协同工作,它们必须与相同的 Lua DLL 实现进行通信。由于应用程序使用 5.0,因此它将加载并与该 DLL 进行交互(假定它使用 Lua 作为 DLL)。因此,您的插件需要针对与应用程序相同的 DLL 进行构建。

2020-01-18 15:57:28