构建Lua for C ++

时间:2013-12-30 12:46:01

标签: c++ gcc lua g++

根据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 ++异常。

1 个答案:

答案 0 :(得分:2)

正如我对原始问题的评论中提到的,我在我的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>