【问题标题】:Lua 5.2 "multiple VMs detected"Lua 5.2“检测到多个虚拟机”
【发布时间】:2014-04-28 21:34:40
【问题描述】:

我有一个简单的程序,我在 Visual C++ 2008 Express 中将其制成 dll:

#include <lua52/lua.h>
#include <lua52/lualib.h>
#include <lua52/lauxlib.h>
#pragma comment(lib,"lua52.lib")
#include <stdio.h>

int needless(lua_State *L)
{
printf("bullshit\n");
return 0;
}
static const struct luaL_Reg noise[] = {
    {"needless",needless},
    {NULL,NULL}
};
__declspec(dllexport) int __cdecl luaopen_noise(lua_State *L)
{

luaL_newlib(L, noise);
    return 1;
}

当我在 lua5.2 解释器中将生成的 dll 与“导入噪声”链接时,我得到了“检测到多个 lua VM”的原因,这让我无法理解。我应该怎么做才能让它工作?

【问题讨论】:

  • Lua #includes 块周围不需要外部 C,因为它们是用 C 编写的吗?
  • 上面的代码是'C'代码,所以不需要externs。

标签: lua


【解决方案1】:

用 C 编写的 Lua 库应该包含 Lua 核心库的副本。

我不知道 Visual C+,但这行可能是罪魁祸首:

#pragma comment(lib,"lua52.lib")

【讨论】:

  • 没有。我用 lua 5.1 创建了同一个库,一切正常。没有链接 lua52.lib 我得到未解决的引用错误。
  • @kuniqs,也许你的宿主程序正在静态链接 Lua。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多