2016-08-15 14 views
1

私の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はそれらを見ることができませんか?

+0

はどのようにあなたのC++ファイルをコンパイルしていますか? –

答えて

1

使用:

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

何が起こっているか詳しく説明を追加してください。あなたが修正するものとその理由。 –

関連する問題