我可以从lua 5.0.2加载用c ++编写的lua 5.3.5 dll吗?

问题描述 投票:1回答:1

我正在修改游戏。有可能用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

c++ dll lua
1个回答
0
投票

由Lua 5.3构建的DLL在由使用Lua 5.0的应用程序加载时将无法正确执行。为了使应用程序和DLL与Lua一起使用,它们必须都与同一个Lua DLL实现进行通信。由于应用程序使用5.0,因此它就是要加载的DLL(假设它完全使用Lua作为DLL)并与之交互。因此,您的插件需要针对与应用程序相同的DLL构建。

© www.soinside.com 2019 - 2024. All rights reserved.