将Lua与Visual Studio 2010链接

我们使用 Lua(www.lua.org)脚本来让用户定制我们用 C++ 编写的服务器软件。

目前,我们正在将我们的项目的 32 位 Windows 版本移植到 Visual Studio 2010 上。 一旦我们在 VS 2008 上一切正常,我们认为在升级过程中不会有问题。

不幸的是,无论何时我们试图将 lualib(作为 DLL)链接到我们在 VS 2010 中的项目中,链接器都找不到 lua 函数(错误消息如下所示)。

似乎在 2010 年出现了某个调用约定错误,例如应用程序可能正在查找具有前缀“_”的 lua 函数。

为了从我们的项目模块(C++)访问 lua 函数(用 C 编写),我们使用了这个:

extern "C" {
#include "lua/src/lua.h"
#include "lua/src/lualib.h"
#include "lua/src/lauxlib.h"
}

相同的项目在 VS 2008 和 Linux(g++)上成功编译和链接 lualib。

有谁能帮我解决这个问题吗?

1>dscscript.obj : error LNK2019: unresolved external symbol __imp__luaL_openlibs referenced in function "public: int __thiscall DsCScriptEngine::Init(void)" (?Init@DsCScriptEngine@@QAEHXZ)

1>dscscript.obj : error LNK2019: unresolved external symbol __imp__luaL_newstate referenced in function "public: int __thiscall DsCScriptEngine::Init(void)" (?Init@DsCScriptEngine@@QAEHXZ)

1>dscscript.obj : error LNK2019: unresolved external symbol __imp__lua_close referenced in function "public: void __thiscall DsCScriptEngine::Shutdown(void)" (?Shutdown@DsCScriptEngine@@QAEXXZ)

1>dscscript.obj : error LNK2019: unresolved external symbol __imp__lua_pcall referenced in function "public: long __thiscall DsCScriptEngine::Execute(char const *)" (?Execute@DsCScriptEngine@@QAEJPBD@Z)

等等。

原文链接 https://stackoverflow.com/questions/3843275

点赞
stackoverflow用户17034
stackoverflow用户17034

将下面翻译成中文并且保留原本的 markdown 格式:

报告的缺失名称是正确的,这不是编译问题。你一定链接了错误的.lib。你使用的名称听起来不对,它不是"lualib",当前版本的导入库名为lua5.1.lib(或lua51.lib,不确定有什么区别)。在这里下载它。

2010-10-01 22:16:18