2015-05-06 5 views
4

Я пытаюсь научиться внедрять lua в программу на C, но я не умею читать технические документы, и я не нашел никаких текущих учебников. Это моя программа:Lua 5.3 undefined ссылки

#include <iostream> 
#include <lua.h> 
#include <lualib.h> 
#include <lauxlib.h> 


void report_errors(lua_State*, int); 

int main(int argc, char** argv) { 
    for (int n = 1; n < argc; ++n) { 
     const char* file = argv[n]; 
     lua_State *L = luaL_newstate(); 

     luaL_openlibs(L); 

     std::cerr << "-- Loading File: " << file << std::endl; 

     int s = luaL_loadfile(L, file); 

     if (s == 0) { 
      s = lua_pcall(L, 0, LUA_MULTRET, 0); 
     } 

     report_errors(L, s); 
     lua_close(L); 
     std::cerr << std::endl; 
    } 
    return 0; 
} 

void report_errors(lua_State *L, int status) { 
    if (status) { 
     std::cerr << "-- " << lua_tostring(L, -1) << std::endl; 
     lua_pop(L, 1); 
    } 
} 

Компилятор дает неопределенные эталонные ошибки для luaL_newstate, luaL_openlibs, luaL_loadfilex, lua_pcallk и lua_close. Я использую Code :: Blocks один для компьютера Windows, и я добавил каталог включения lua ко всем путям поиска и liblua53.a в библиотеки ссылок. IDE autocompleted имена заголовков, и синтаксический анализатор отображает большинство функций lua, но с кратким поиском я обнаружил, что синтаксический анализатор не смог найти ни lua_newstate, ни luaL_newstate. Почему он находит некоторые функции, а не другие?

+0

Это C++ не c, вы можете получить дополнительную помощь, если вы переключите тег. – 2trill2spill

+0

Используйте 'extern 'C" '([link] (https://csl.name/post/lua-and-cpp/)) –

+0

_« Я не очень хорошо читаю технические документы »_ Можете ли вы рассказать об этом? Это умение, которое вы будете учиться, а не просто сдаваться. –

ответ

0

Аргументы для g ++ имели -llua перед входным файлом. Я положил -llua в конце, и теперь все работает нормально.

4

В C++ вы должны указать lua.hpp не lua.h. lua.h не определяет блок extern "C", чтобы остановить изменение имени компилятора C++.

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