12

undefined reference to 'luaL_newstate'プロジェクトをビルドしようとするとエラーが発生しました。リンカのエラーであることはわかっていますが、Luaに比較的慣れておらず、プロジェクトにライブラリを追加しています。ちなみに私はCode::Blocksを使用しています。API関数、、、、、もluaL_openlibsありluaL_loadfileませ ん。lua_pcalllua_getfieldlua_typelua_settop

この問題を解決するには、プロジェクトをlibdlにリンクする必要があることをウェブサイトで見ましたが、それが何を意味し、どのように実行するのかはよくわかりません。

4

3 に答える 3

22

私は同じ問題に直面しました。私の場合、ここでうまくいった解決策を見つけました。基本的には、luaの#includeをextern "C"のようにラップすることで構成されます。

extern "C"{
    #include <lua5.2/lualib.h>
    #include <lua5.2/lauxlib.h>
    #include <lua5.2/lua.h>
}
于 2014-01-15T08:22:14.007 に答える
3

Lua を最初にコンパイルしようとするときは、少し複雑になることがあります。あなたが参照した Web サイトは正しかったです。Lua をリンクするには libdl がほとんど必要です。

目の前に Code::Blocks がないので、どのオプションを追加する必要があるかはわかりません。「コマンド ライン オプション」または「コンパイラ オプション」のリストである必要があります。コマンド ラインからコンパイルする場合、完全なコマンドは次のようになります。

gcc -o sample sample.c -llua -ldl

-l オプションでは、ライブラリ名の前にスペースがないことに注意してください。Code::Blocks には、独自のコンパイル時オプションまたはコンパイラ フラグを追加するオプションが必要です。そのオプション リストに「-llua」と「-ldl」を追加します。または、コマンドラインから自分で実行してください。

libdl は、他のライブラリをプログラムに動的にリンクするときに使用されるライブラリです。Lua を正しくリンクするには、これを追加する必要があります。

于 2012-12-30T20:19:47.150 に答える