我们使用Lua(www.lua.org)脚本来让用户自定义我们用C ++编写的服务器软件。
目前,我们正在将32位Windows版本的项目移植到Visual Studio 2010。一旦在VS2008中一切正常,我们认为升级过程不会有任何问题。
但是,每当我们尝试将lualib(作为dll)链接到我们在VS2010中的项目时,链接器无法找到lua函数(错误消息如下所示)。
似乎在2010年有些调用约定是错误的,例如应用程序可能正在寻找带有前缀“_”的lua函数。
为了从我们的项目模块(C ++)访问lua函数(以C编写),我们使用以下方法:
同一个项目在VS 2008和Linux(g ++)上可以成功编译并与lualib链接。
有人可以帮我解决这个问题吗?
1>dscscript.obj:error LNK2019:在函数“public: int __thiscall DsCScriptEngine::Init(void)”(?Init@DsCScriptEngine@@QAEHXZ)中引用了未解析的外部符号__imp__luaL_openlibs。
1>dscscript.obj:error LNK2019:在函数“public: int __thiscall DsCScriptEngine::Init(void)”(?Init@DsCScriptEngine@@QAEHXZ)中引用了未解析的外部符号__imp__luaL_newstate。
1>dscscript.obj:error LNK2019:在函数“public: void __thiscall DsCScriptEngine::Shutdown(void)”(?Shutdown@DsCScriptEngine@@QAEXXZ)中引用了未解析的外部符号__imp__lua_close。
1>dscscript.obj:error LNK2019:在函数“public: long __thiscall DsCScriptEngine::Execute(char const *)”(?Execute@DsCScriptEngine@@QAEJPBD@Z)中引用了未解析的外部符号__imp__lua_pcall。
目前,我们正在将32位Windows版本的项目移植到Visual Studio 2010。一旦在VS2008中一切正常,我们认为升级过程不会有任何问题。
但是,每当我们尝试将lualib(作为dll)链接到我们在VS2010中的项目时,链接器无法找到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:在函数“public: int __thiscall DsCScriptEngine::Init(void)”(?Init@DsCScriptEngine@@QAEHXZ)中引用了未解析的外部符号__imp__luaL_openlibs。
1>dscscript.obj:error LNK2019:在函数“public: int __thiscall DsCScriptEngine::Init(void)”(?Init@DsCScriptEngine@@QAEHXZ)中引用了未解析的外部符号__imp__luaL_newstate。
1>dscscript.obj:error LNK2019:在函数“public: void __thiscall DsCScriptEngine::Shutdown(void)”(?Shutdown@DsCScriptEngine@@QAEXXZ)中引用了未解析的外部符号__imp__lua_close。
1>dscscript.obj:error LNK2019:在函数“public: long __thiscall DsCScriptEngine::Execute(char const *)”(?Execute@DsCScriptEngine@@QAEJPBD@Z)中引用了未解析的外部符号__imp__lua_pcall。