2016-07-14 49 views
2

我想在C++中使用Lua,但是我無法編譯我的代碼。我正在使用目前爲5.​​3的最新版本的Lua。我的IDE是Code :: Blocks。到目前爲止,我在下面的指南這樣的: https://eliasdaler.wordpress.com/2013/10/11/lua_cpp_binder/ http://gamedevgeek.com/tutorials/getting-started-with-lua/在C++中使用Lua

但是他們沒有解釋很多關於如何設置的Lua用C :: B。我已經從Lua的網站下載了二進制zip和源代碼。我不確定從src文件夾放置文件的位置。到目前爲止,我已經把lauxlib.h的lua.h的luaconf.h和lualib.h到包括目錄,並用在main.cpp中下面的代碼:

extern "C" { 
    #include "lua.h" 
    #include "lualib.h" 
    #include "lauxlib.h" 
} 

到目前爲止我只是試圖運行下面的小片段:

lua_State* L; 
L = luaL_newstate(); 
luaL_openlibs(L); 
luaL_dofile(L, "test.lua"); 
lua_close(L); 

然而,我總是在第一線得到一個錯誤。我目前收到的錯誤表明,該引用未定義爲'luaL_newstate'。

也許我應該從源文件放在lib目錄中的一些文件?或者有什麼我必須添加到「項目構建選項」菜單中的「其他鏈接器選項」?

編輯:

在平均時間,我發現這樣一個問題: Lua 5.3 undefined references

看來我得把-llua到「Opther連接選項」,但目前還沒有.a,.so或.lib文件包含在lua.org的軟件包中。

+2

我不知道如何做到這一點在C :: B,但你必須鏈接lua庫。或者,您也可以將源文件包含到您的項目中,但那不是「正確」的方式。像任何其他庫一樣鏈接庫。 – pschulz

+0

@pschulz我認爲Lua的設計是爲了讓你可以添加源文件。 – immibis

+0

@pschulz是否有一個一般的解釋如何鏈接庫?每次我搜索這個時,我都會在論壇上得到模糊的解釋,但是從來沒有寫得很好的一步一步的教程。這讓我覺得,當我學習這門語言時,我錯過了一些微不足道的東西。之前我設立SDL時,我很幸運,因爲Lazyfoo詳細解釋了一切。此時,我將所有.h文件包含在包含庫中,並將所有.c文件放在.cpp文件旁邊,但仍然收到相同的錯誤。 – Letokteren

回答

0

我終於可以使問題中提到的代碼運行。這就是我所做的。

  1. 而是從下載Lua的網站源碼,我下載了最新 LuaDist。該網站還可以通過二進制類別下的Lua.org的 download頁面訪問。

  2. 在該zip中,有通常的include和lib文件夾。

  3. 我已經將兩者都複製到相應的文件夾中,並在編譯選項菜單下爲編譯器和鏈接器設置路徑爲 。

  4. 然後,在鏈接器設置選項卡下,我添加了liblua.dll.a 文件,該文件可以在lib目錄中找到。最後兩步,您可以在SFML setup page找到更多幫助。

  5. 最後一步,我將liblua.dll文件放在 編譯的可執行文件旁邊。