簡體   English   中英

構建Lua for C ++

[英]Building Lua for C++

根據Lua Wiki,如果將Lua 5.1或更高版本編譯為C ++,它將使用C ++異常。 由於Lua是一個C庫,它只引用makefile中的CC。 所以,我的想法是將CC重新定義為“g ++”,所以我不必修改makefile。

make generic CC="g++"

我能夠毫無問題地構建Lua。 但是,現在當我將C ++應用程序鏈接到Lua(靜態)庫時,我收到許多Lua函數(lua_checklstring,lua_pushinteger等)的未定義引用錯誤。

當我使用gcc構建Lua時,我的應用程序鏈接成功。

make generic CC="gcc"

我是否錯誤地編譯Lua for C ++? 我假設我需要以某種方式使用g ++,因為Lua源代碼包含cplusplus的預處理器檢查以確定是否應該啟用C ++異常。

正如我對原始問題的評論中提到的,我在我的C ++應用程序中包含了lua.hpp。 當Lua被編譯為C庫時,這很有效,因為lua.hpp undos name mangling:

lua.hpp:

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

正如@EtanReisner所指出的,當使用Lua作為C ++庫時,我不需要撤消名稱修改。 所以解決方案是簡單地包含實際的Lua頭,而不是lua.hpp

// Using Lua as a C library
#include <lua.hpp>

// Using Lua as a C++ library
#include <lua.h>
#include <lualib.h>
#include <lauxlib.h>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM