VC++编译lua库 无法解析lua符号问题

VC编译lua库 出现错误:

错误	36	error LNK1120: 21 个无法解析的外部命令	C:\Users\luozhuang\Desktop\onscripter-20120416VC\Release\onscripter.exe	onscripter
错误	19	error LNK2019: 无法解析的外部符号 "char const * __cdecl lua_tolstring(struct lua_State *,int,unsigned int *)" (?lua_tolstring@@YAPBDPAUlua_State@@HPAI@Z),该符号在函数 "public: int __thiscall LUAHandler::callFunction(bool,char const *)" (?callFunction@LUAHandler@@QAEH_NPBD@Z) 中被引用	C:\Users\luozhuang\Desktop\onscripter-20120416VC\LUAHandler.obj	onscripter
错误	32	error LNK2019: 无法解析的外部符号 "char const * __cdecl luaL_checklstring(struct lua_State *,int,unsigned int *)" (?luaL_checklstring@@YAPBDPAUlua_State@@HPAI@Z),该符号在函数 "public: bool __thiscall LUAHandler::isCallbackEnabled(int)" (?isCallbackEnabled@LUAHandler@@QAE_NH@Z) 中被引用	C:\Users\luozhuang\Desktop\onscripter-20120416VC\LUAHandler.obj	onscripter
错误	29	error LNK2019: 无法解析的外部符号 "int __cdecl lua_error(struct lua_State *)" (?lua_error@@YAHPAUlua_State@@@Z),该符号在函数 "public: bool __thiscall LUAHandler::isCallbackEnabled(int)" (?isCallbackEnabled@LUAHandler@@QAE_NH@Z) 中被引用	C:\Users\luozhuang\Desktop\onscripter-20120416VC\LUAHandler.obj	onscripter
错误	28	error LNK2019: 无法解析的外部符号 "int __cdecl lua_pcall(struct lua_State *,int,int,int)" (?lua_pcall@@YAHPAUlua_State@@HHH@Z),该符号在函数 "public: void __thiscall LUAHandler::init(class ONScripter *,class ScriptHandler *)" (?init@LUAHandler@@QAEXPAVONScripter@@PAVScriptHandler@@@Z) 中被引用	C:\Users\luozhuang\Desktop\onscripter-20120416VC\LUAHandler.obj	onscripter
错误	18	error LNK2019: 无法解析的外部符号 "int __cdecl lua_toboolean(struct lua_State *,int)" (?lua_toboolean@@YAHPAUlua_State@@H@Z),该符号在函数 "public: bool __thiscall LUAHandler::isCallbackEnabled(int)" (?isCallbackEnabled@LUAHandler@@QAE_NH@Z) 中被引用	C:\Users\luozhuang\Desktop\onscripter-20120416VC\LUAHandler.obj	onscripter
错误	17	error LNK2019: 无法解析的外部符号 "int __cdecl lua_tointeger(struct lua_State *,int)" (?lua_tointeger@@YAHPAUlua_State@@H@Z),该符号在函数 "public: bool __thiscall LUAHandler::isCallbackEnabled(int)" (?isCallbackEnabled@LUAHandler@@QAE_NH@Z) 中被引用	C:\Users\luozhuang\Desktop\onscripter-20120416VC\LUAHandler.obj	onscripter
错误	33	error LNK2019: 无法解析的外部符号 "int __cdecl luaL_checkinteger(struct lua_State *,int)" (?luaL_checkinteger@@YAHPAUlua_State@@H@Z),该符号在函数 "public: bool __thiscall LUAHandler::isCallbackEnabled(int)" (?isCallbackEnabled@LUAHandler@@QAE_NH@Z) 中被引用	C:\Users\luozhuang\Desktop\onscripter-20120416VC\LUAHandler.obj	onscripter
错误	34	error LNK2019: 无法解析的外部符号 "int __cdecl luaL_loadbuffer(struct lua_State *,char const *,unsigned int,char const *)" (?luaL_loadbuffer@@YAHPAUlua_State@@PBDI1@Z),该符号在函数 "public: void __thiscall LUAHandler::init(class ONScripter *,class ScriptHandler *)" (?init@LUAHandler@@QAEXPAVONScripter@@PAVScriptHandler@@@Z) 中被引用	C:\Users\luozhuang\Desktop\onscripter-20120416VC\LUAHandler.obj	onscripter
错误	35	error LNK2019: 无法解析的外部符号 "struct lua_State * __cdecl luaL_newstate(void)" (?luaL_newstate@@YAPAUlua_State@@XZ),该符号在函数 "public: void __thiscall LUAHandler::init(class ONScripter *,class ScriptHandler *)" (?init@LUAHandler@@QAEXPAVONScripter@@PAVScriptHandler@@@Z) 中被引用	C:\Users\luozhuang\Desktop\onscripter-20120416VC\LUAHandler.obj	onscripter
错误	15	error LNK2019: 无法解析的外部符号 "void __cdecl lua_close(struct lua_State *)" (?lua_close@@YAXPAUlua_State@@@Z),该符号在函数 "public: __thiscall LUAHandler::~LUAHandler(void)" (??1LUAHandler@@QAE@XZ) 中被引用	C:\Users\luozhuang\Desktop\onscripter-20120416VC\LUAHandler.obj	onscripter
错误	26	error LNK2019: 无法解析的外部符号 "void __cdecl lua_getfield(struct lua_State *,int,char const *)" (?lua_getfield@@YAXPAUlua_State@@HPBD@Z),该符号在函数 "public: int __thiscall LUAHandler::callFunction(bool,char const *)" (?callFunction@LUAHandler@@QAEH_NPBD@Z) 中被引用	C:\Users\luozhuang\Desktop\onscripter-20120416VC\LUAHandler.obj	onscripter
错误	24	error LNK2019: 无法解析的外部符号 "void __cdecl lua_pushboolean(struct lua_State *,int)" (?lua_pushboolean@@YAXPAUlua_State@@H@Z),该符号在函数 "public: bool __thiscall LUAHandler::isCallbackEnabled(int)" (?isCallbackEnabled@LUAHandler@@QAE_NH@Z) 中被引用	C:\Users\luozhuang\Desktop\onscripter-20120416VC\LUAHandler.obj	onscripter
错误	22	error LNK2019: 无法解析的外部符号 "void __cdecl lua_pushinteger(struct lua_State *,int)" (?lua_pushinteger@@YAXPAUlua_State@@H@Z),该符号在函数 "public: bool __thiscall LUAHandler::isCallbackEnabled(int)" (?isCallbackEnabled@LUAHandler@@QAE_NH@Z) 中被引用	C:\Users\luozhuang\Desktop\onscripter-20120416VC\LUAHandler.obj	onscripter
错误	25	error LNK2019: 无法解析的外部符号 "void __cdecl lua_pushlightuserdata(struct lua_State *,void *)" (?lua_pushlightuserdata@@YAXPAUlua_State@@PAX@Z),该符号在函数 "public: void __thiscall LUAHandler::init(class ONScripter *,class ScriptHandler *)" (?init@LUAHandler@@QAEXPAVONScripter@@PAVScriptHandler@@@Z) 中被引用	C:\Users\luozhuang\Desktop\onscripter-20120416VC\LUAHandler.obj	onscripter
错误	21	error LNK2019: 无法解析的外部符号 "void __cdecl lua_pushnumber(struct lua_State *,double)" (?lua_pushnumber@@YAXPAUlua_State@@N@Z),该符号在函数 "public: bool __thiscall LUAHandler::isCallbackEnabled(int)" (?isCallbackEnabled@LUAHandler@@QAE_NH@Z) 中被引用	C:\Users\luozhuang\Desktop\onscripter-20120416VC\LUAHandler.obj	onscripter
错误	23	error LNK2019: 无法解析的外部符号 "void __cdecl lua_pushstring(struct lua_State *,char const *)" (?lua_pushstring@@YAXPAUlua_State@@PBD@Z),该符号在函数 "public: bool __thiscall LUAHandler::isCallbackEnabled(int)" (?isCallbackEnabled@LUAHandler@@QAE_NH@Z) 中被引用	C:\Users\luozhuang\Desktop\onscripter-20120416VC\LUAHandler.obj	onscripter
错误	16	error LNK2019: 无法解析的外部符号 "void __cdecl lua_pushvalue(struct lua_State *,int)" (?lua_pushvalue@@YAXPAUlua_State@@H@Z),该符号在函数 "public: void __thiscall LUAHandler::init(class ONScripter *,class ScriptHandler *)" (?init@LUAHandler@@QAEXPAVONScripter@@PAVScriptHandler@@@Z) 中被引用	C:\Users\luozhuang\Desktop\onscripter-20120416VC\LUAHandler.obj	onscripter
错误	27	error LNK2019: 无法解析的外部符号 "void __cdecl lua_setfield(struct lua_State *,int,char const *)" (?lua_setfield@@YAXPAUlua_State@@HPBD@Z),该符号在函数 "public: void __thiscall LUAHandler::init(class ONScripter *,class ScriptHandler *)" (?init@LUAHandler@@QAEXPAVONScripter@@PAVScriptHandler@@@Z) 中被引用	C:\Users\luozhuang\Desktop\onscripter-20120416VC\LUAHandler.obj	onscripter
错误	30	error LNK2019: 无法解析的外部符号 "void __cdecl luaL_openlibs(struct lua_State *)" (?luaL_openlibs@@YAXPAUlua_State@@@Z),该符号在函数 "public: void __thiscall LUAHandler::init(class ONScripter *,class ScriptHandler *)" (?init@LUAHandler@@QAEXPAVONScripter@@PAVScriptHandler@@@Z) 中被引用	C:\Users\luozhuang\Desktop\onscripter-20120416VC\LUAHandler.obj	onscripter
错误	31	error LNK2019: 无法解析的外部符号 "void __cdecl luaL_register(struct lua_State *,char const *,struct luaL_Reg const *)" (?luaL_register@@YAXPAUlua_State@@PBDPBUluaL_Reg@@@Z),该符号在函数 "public: void __thiscall LUAHandler::init(class ONScripter *,class ScriptHandler *)" (?init@LUAHandler@@QAEXPAVONScripter@@PAVScriptHandler@@@Z) 中被引用	C:\Users\luozhuang\Desktop\onscripter-20120416VC\LUAHandler.obj	onscripter
错误	20	error LNK2019: 无法解析的外部符号 "void const * __cdecl lua_topointer(struct lua_State *,int)" (?lua_topointer@@YAPBXPAUlua_State@@H@Z),该符号在函数 "public: bool __thiscall LUAHandler::isCallbackEnabled(int)" (?isCallbackEnabled@LUAHandler@@QAE_NH@Z) 中被引用	C:\Users\luozhuang\Desktop\onscripter-20120416VC\LUAHandler.obj	onscripter


解决方法:因为是C++项目,EXE引用的lua头文件必须这样写:

extern "C" {
#include <lua.h>
}

extern "C" {
#include <lualib.h>
#include <lauxlib.h>
}

阅读更多
博主设置当前文章不允许评论。

没有更多推荐了,返回首页