如何将函数从C ++可执行文件公开给LuaJIT

时间:2016-08-15 06:53:20

标签: c++ function symbols ffi luajit

我正在尝试将Lua脚本加载到我的c ++应用程序中并运行它。 我决定使用LuaJIT来利用它的FFI库。 但我有这个奇怪的问题,我的Lua脚本无法看到我在C ++代码中定义的函数符号,并且在运行我的应用程序时出现此错误:

  

未定义的符号:test_func_a

下面是我的C ++和Lua代码:

// C ++ //

local ffi = require('ffi');

ffi.cdef[[
  void test_func_a (void);
]]

ffi.C.test_func_a()

}

// //的Lua

Caused by: java.io.IOException: Cannot run program "npm" (in directory "/home/pi/projects/paho.mqtt.javascript"): error=2, No such file or directory

默认情况下gcc会导出所有符号,为什么luajit无法看到它们?

1 个答案:

答案 0 :(得分:1)

使用:

extern "C" __declspec(dllexport) void test_func_a ( void ) {printf ("hello\n" );}