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

有什么问题?

+3

如果你正在做C++,那么你应该包括:'/ lua-5.1.4/etc/lua.hpp' – AraK 2010-10-16 23:57:18

+0

已包含在内。 – Q2Ftb3k 2010-10-16 23:59:58

+0

对不起,你上面介绍的代码在哪里? – AraK 2010-10-17 00:01:05

你的代码可能没有错,你有一个链接问题,它找不到lua_tolstring的函数定义。链接时添加lua库,你应该没问题。

+0

我以为我做到了。链接器 - >输入 - >附加依赖 - > lua.lib – Q2Ftb3k 2010-10-16 23:52:28

+0

@Camoy - 没有拿到项目和解决方案,并添加到lib文件的路径 – DumbCoder 2010-10-17 10:35:46

你需要用的LUA头在extern "C"以获得正确的符号联系,以及连接到lib(如果您没有将其编译到项目)

+0

为extern “C”{ 的#include 的#include 的#include } #include #include //像这样?它这次得到了一个不同的错误,代码生成失败。 – Q2Ftb3k 2010-10-16 23:55:00

+1

@Camoy:失败伴随着什么样的错误?你是否重建所有以避免被污染的目标? – Necrolis 2010-10-17 05:59:25

的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