2011-12-18 53 views
20

Tôi đã cố gắng nhúng lua vào ứng dụng C++ nhưng không có kết quả nào vì trình biên dịch phàn nàn về "lua_open" .Tôi đang sử dụng Lua 5.2.Nhúng Lua vào C++

Tôi đã tìm thấy rất nhiều bài báo cho rằng lua_open() đã được thay thế trong phiên bản thứ năm nhưng không ai trong số chúng được đề cập đến với những gì.

Dưới đây là đoạn code tôi đang cố gắng để biên dịch

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

int main() 
{ 
    int s=0; 

    lua_State *L = lua_open(); 
    // load the libs 
    luaL_openlibs(L); 
    luaL_dofile(L,"example.lua"); 
    printf("\nDone!\n"); 
    lua_close(L); 

    return 0; 
} 
+4

'lua_open' đã không có trong sách hướng dẫn 5.1. Nó chỉ hoạt động cho khả năng tương thích, hiện đã được gỡ bỏ trong 5.2. – lhf

+0

Xem thêm câu trả lời tràn ngăn xếp rất hữu ích này với một ví dụ về hàm lua_Alloc() với các liên kết đến tài liệu lua. http://stackoverflow.com/questions/3880798/lua-runs-out-of-memory –

+0

Đây là một câu trả lời tràn ngăn xếp thứ hai cho một vài chi tiết liên quan đến phân bổ bộ nhớ lua http://stackoverflow.com/questions/11324117/ cách phân phối-bộ nhớ-hiện-vms-xử lý-bộ nhớ –

Trả lời

34

Trên thực tế, chức năng lua_open không được đề cập trong lua 5.2 reference manual

Một lua_State được xây dựng với lua_newstate, và bạn có thể sử dụng luaL_newstate từ lauxlib.h

Cách nhanh hơn để nhận được câu trả lời cho câu hỏi như vậy là xem xét mã nguồn Lua 5.2 (mà tôi vừa làm).