我们使用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)
等
答案 0 :(得分:4)
报告的缺失名称是正确的,这不是编译问题。你必须链接错误的.lib。您使用的名称听起来不对,它不是“lualib”,导入库的当前版本名为lua5.1.lib(或lua51.lib,不确定区别是什么)。下载from here。