[英]Using Lua in C++
我正在嘗試在 C++ 中使用 Lua,但我無法編譯我的代碼。 我正在使用最新版本的 Lua,目前是 5.3。 我的 IDE 是 Code::Blocks。 到目前為止,我正在遵循以下指南: https : //eliasdaler.wordpress.com/2013/10/11/lua_cpp_binder/ http://gamedevgeek.com/tutorials/getting-started-with-lua/
然而,他們並沒有解釋如何在 C::B 中設置 Lua。 我已經從 Lua 的網站下載了二進制 zip 和源代碼。 我不確定將 src 文件夾中的文件放在哪里。 到目前為止,我已經將 lauxlib.h、lua.h、luaconf.h 和 lualib.h 放入 include 目錄,並在 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 鏈接器選項”中,但是 lua.org 的軟件包中沒有包含 .a、.so 或 .lib 文件。
LUA
+ C++
中的 hello world 示例
主程序
#include <iostream>
#ifdef __cplusplus
extern "C" {
#include "lua.h"
#include "lualib.h"
#include "lauxlib.h"
}
#endif //__cplusplus
int main(int argc, char **argv) {
std::cout << "LUA is saying: ";
lua_State* L;
L = luaL_newstate();
lua_pushstring(L, "Anna");
lua_setglobal(L, "name");
luaL_openlibs(L);
if(luaL_dofile(L, "hello.lua")) {
std::cout << "Final:" << lua_tostring(L, -1) << "\n";
}
lua_close(L);
}
你好.lua
print("Hello World!")
print("Hello", name)
生成文件
hello: main.cpp
g++ -I/usr/include/lua5.3/ main.cpp -llua5.3 -o hello
這個例子是創建一個新的lua_State
,它是lua
引擎用來執行代碼的主要上下文。 下一步,我們需要打開庫,如果需要,添加將被lua
使用的其他庫。
在我們開始執行之前,我們可以通過將值壓入堆棧並調用lua_setglobal()
來設置全局變量來設置 lua 代碼將訪問的全局上下文中的變量。
最后,我們使用輔助函數luaL_dofile()
,它將執行文件並在沒有錯誤的情況下返回false
(0),或者在有錯誤的情況下返回true
(1)。 如果出現錯誤,狀態中堆棧的最后一個值將是錯誤描述。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.