2

UbuntuでIUPを動作させようとしています。sourceforge からバイナリをダウンロードしたところ、ライブラリは /usr/lib/libiup*.so に配置されているようですが、次のようなスクリプトを作成すると:

require("iuplua")
iup.Message('Testing App!', 'Finished Successfully!')

エラーが発生します:

lua: attempt to call a nil value
stack traceback:
    [C]: ?
    [C]: in function 'require'
    test.lua:1: in main chunk
    [C]: ?

調べてみると、誰かが修正したようだというメッセージが表示されました。「LD_LIBRARY_PATH が正しい cd および im ディレクトリを指していませんでした」などです。LD_LIBRARY_PATH 環境変数で問題を解決できなかったようです。2008 年の別のメモで、「IUPLua バイナリにはハードコードされた lua バイトコードがあり、これがエラーの原因となっている」と書かれていました。ソースからコンパイルしようとしましたが、cd.h に関連するエラーが発生します。

どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

2

これがあなたがチェックできるものです、おそらくそれは助けになるでしょう。

requireでモジュールをロードすると、 Luaはパッケージパスを使用してモジュールを探す場所を決定します。

package.path:Luaが.luaモジュールを検索する場所
package.cpath:Luaが.so/.dllモジュールを検索する場所

Luaマニュアルのこのセクションを見てください:モジュール。具体的には、package.pathpackage.cpathのセクションです。

現在のパスがどのようなものかを確認できます。

print(package.path.."\n"..package.cpath)

次のようなパスを追加できます。

package.path = package.path..";/usr/lib/?.lua"
package.cpath = package.cpath..";/usr/lib/?.so"
于 2011-07-04T04:16:43.640 に答える