我可以制作函数`extern" c"`?

时间:2016-08-26 08:40:59

标签: c++ c lua ffi luajit

我有一些cpp文件,我想使用FFI将它们与LuaJit结合使用。

但问题是,我必须为几乎每个函数添加extern "c"个符号,以便FFI可以访问它们。

有没有更简单的方法来完成这项工作?

2 个答案:

答案 0 :(得分:0)

可以在单个extern "C"块中放置多个函数。这允许您只为每个头文件键入extern "C"一次。

extern "C" {
    void function1();
    void function2();
}

答案 1 :(得分:0)

虽然它是不可移植的,但您可以实现函数签名并使用名称修改协议生成Mangled name以查找FFI的符号名称。

Linux上的Gcc和Clang使用Itanium C ++ ABI名称管理规则,可以找到here.

在Windows上,MSVC使用未记录的名称修改方案。