c++ - 将 Lua 与 Visual Studio 2010 链接起来

标签 c++ c lua

我们使用 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)

等等

最佳答案

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

关于c++ - 将 Lua 与 Visual Studio 2010 链接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3843275/

相关文章:

c++ - Kate 之类的程序中使用的 Kde 栏的小部件名称是什么? (内图)

c++ - 如何编写可以处理对象或指针函数调用的模板函数?

iphone - 潜在的泄漏? - 分析仪

C getprotobyname 添加协议(protocol)

c++ - 我应该使用 C 还是 C++ 编写 OpenGL 程序?真糊涂

multithreading - 从另一个线程调用Lua函数

c - 如何使用 SWIG 包装带有可变参数的 C 函数

c++ - 在任何情况下都可以使用整数或 float ?

c++ - std::is_same 对于尚未定义/声明的类

c# - 取消主机 yield