C++的Lua 5.1版本
问题描述:
#include <stdio.h>
#include <string.h>
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>
int main (void) {
char buff[256];
int error;
lua_State *L = lua_open(); /* opens Lua */
luaL_openlibs(L);
while (fgets(buff, sizeof(buff), stdin) != NULL) {
error = luaL_loadbuffer(L, buff, strlen(buff), "line") ||
lua_pcall(L, 0, 0, 0);
if (error) {
fprintf(stderr, "%s", lua_tostring(L, -1));
lua_pop(L, 1); /* pop error message from the stack */
}
}
lua_close(L);
return 0;
}
这似乎传播几个错误,如:C++的Lua 5.1版本
错误LNK2019:解析的外部符号 “字符常量* __cdecl lua_tolstring(结构lua_State *,整型,无符号整型*)”(lua_tolstring @@ YAPBDPAUlua_State @@ HPAI @ Z)在函数_main中引用main.obj
有什么问题?
答
的Lua的文件在C所以你必须使用
extern "C" { #include "luafiles.cpp" }
您刚刚收到链接错误。
答
的Lua 5.1有lua.hpp:
// lua.hpp
// Lua header files for C++
// <<extern "C">> not supplied automatically because Lua also compiles as C++
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
只是#include <lua.hpp>
。
答
遇到这种链接错误,我不得不改变
#define LUA_API extern
到
#define LUA_API extern "C"
我使用的Lua 5.1 BTW
如果你正在做C++,那么你应该包括:'/ lua-5.1.4/etc/lua.hpp' – AraK 2010-10-16 23:57:18
已包含在内。 – Q2Ftb3k 2010-10-16 23:59:58
对不起,你上面介绍的代码在哪里? – AraK 2010-10-17 00:01:05