2010-10-16 4 views
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 *, INT, неподписанных INT *)" (lua_tolstring @@ YAPBDPAUlua_State @@ HPAI @ Z) ссылка на функцию _main main.obj

Что случилось?

+3

Если вы делаете C++, то вы должны включить : '/ lua-5.1.4/etc/lua.hpp' – AraK

+0

Уже включено. – Q2Ftb3k

+0

Извините, но где это в коде, который вы указали выше? – AraK

ответ

1

Возможно, что-то не так с вашим кодом, у вас есть проблема с привязкой, он не может найти определение функции для lua_tolstring. Добавьте lua-библиотеку при соединении, и все будет в порядке.

+0

Я думал, что сделал. Linker -> Input -> Дополнительные зависимости -> lua.lib – Q2Ftb3k

+0

@Camoy - Нет есть проекты & Solutions и добавьте путь в Lib файлы – DumbCoder

6

Вам нужно обернуть заголовки Lua в extern "C", чтобы получить правильные связи символов, а также ссылки на Lib (если вы не компилировать его в проект)

+0

Экстерн "C" {#include #include #include } #include #include // Как так? На этот раз на этот счет приходит другая ошибка, сгенерирована генерация кода. – Q2Ftb3k

+1

@ Камой: Какие ошибки сопровождают сбой? Вы перестроили все, чтобы избежать загрязненных объектов? – Necrolis

0

Файлы Lua в C, так что вы должны для использования

extern "C" { #include "luafiles.cpp" } 

Вы просто получаете ошибки компоновщика.

6

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>.

2

Встречающиеся эту ошибку связующую и я бы изменить

#define LUA_API extern 

в

#define LUA_API extern "C" 

Я использую Lua 5.1 BTW

Смежные вопросы