2

lua を C に埋め込む方法については、ここで説明されている基本的なガイドに従おうとしています。コードをそのまま自分のembed.c ファイルにコピーし、リストされている正確なコンパイラ コマンドを実行しました。

cc -o embed embed.c \
            -I/usr/local/include \
            -L/usr/local/lib \
            -llua -llualib

エラーが発生します:

embed.c:19:14: error: invalid storage class for function ‘openlualibs’

その後、関数を の外に移動し、main再度コンパイルして、次のようにしました。

/usr/bin/ld: cannot find -llualib

なぜこれをコンパイルできないのか途方に暮れています。lua は正しくインストールされています。他の誰かがこれらの問題に遭遇しましたか? これが悪いチュートリアルである場合は、お気軽にバッター チュートリアルに誘導してください。

4

2 に答える 2

5

lua-devel一部の Linux ディストリビューションでは、パッケージに対してプロジェクトをコンパイルおよびリンクするために必要な適切なヘッダー ファイルとライブラリ シンボリック リンクを取得するために、(または同様の名前の) パッケージをインストールする必要がある場合があります。liblualib-<version>.so.<version>たとえばがある場合はliblualib-5.so.5.0、devel パッケージをインストールする必要がある場合があります。

lua 5.1 以降でliblualibは存在しません。リリースのお知らせは次のとおりです: http://lua-users.org/lists/lua-l/2005-05/msg00186.html

于 2012-07-30T19:30:39.113 に答える
1

Lua を埋め込むときに、多少似たような問題が発生しました。私にとってうまくいくことがわかったのは、ダイナミックリンクライブラリ(dl)と数学ライブラリ(m)をリンクすることです。lmath 標準ライブラリを使用していない場合、数学ライブラリは必要ない場合があります。

cc -o embed embed.c -I/usr/local/include -L/usr/local/lib -llua -lm -ldl

もちろん、これは /usr/local/ が Lua ファイルがインストールされている場所であると想定していますが、これはおそらく本当です。

リンク先のチュートリアルについては、かなり古くなっていると思います。liblualib が存在しないことに加えて、各標準ライブラリを開くための個別の関数があります。これらは luaopen_* 関数です。関連する 5.1 リファレンス マニュアルのエントリを次に示します。(5.1 を使用していると思います。パッケージで利用可能なバージョンのようです) 残念ながら、これは Lua 5.0 用に書かれています。これはまだほとんど関連性がありますが、5.1 リファレンス マニュアルの関連セクションも参照することをお勧めします。

于 2012-07-30T20:04:08.187 に答える