私のC++アプリケーションにLuaスクリプトをロードして実行しようとしています。 私はLuaJITを使ってFFIライブラリを利用することに決めました。 しかし、私は私のLuaスクリプトは、私は私のC++のコードで定義された関数のシンボルを見ることができないと私は私のアプリを実行しているときにこのエラーが発生します。この奇妙な問題があります。関数をC++実行可能ファイルからLuaJITに公開する方法
未定義のシンボル:test_func_a以下
ですが私のC++とLuaのコード:
// C++ //
#include <stdlib.h>
#include <stdio.h>
#include <assert.h>
#include <lua.hpp>
#ifdef __cplusplus
extern "C" {
#endif
void test_func_a (void) {
printf ("hello\n");
}
#ifdef __cplusplus
}
#endif
int main (int argc, char** argv) {
lua_State *lua = luaL_newstate();
assert (lua);
luaL_openlibs (lua);
const int status = luaL_dostring (lua, lua_script_content);
if (status)
printf ("Couldn't execute LUA code: %s\n", lua_tostring (lua, -1));
lua_close (lua);
return 0;
}
// Luaの//デフォルトのgccによる
local ffi = require('ffi');
ffi.cdef[[
void test_func_a (void);
]]
ffi.C.test_func_a()
は、すべてのシンボルをエクスポートしますが、来るどのようにluajitはそれらを見ることができませんか?
はどのようにあなたのC++ファイルをコンパイルしていますか? –