2017-01-15 8 views
1

私はluaの呼び出しを実装するmainメソッドでcppファイルを作成しました。私は次のエラーが表示されQTプロジェクト実行+コンパイルする場合 :Qt with Lua | luaファイルを置く場所

PANIC: unprotected error in call to Lua API (attempt to call a string value)

問題はLUAがLUAファイルが実行されるように見つけることができないということですが(少なくとも私はそれだと思います)。だから私はすべてのデバッグディレクトリとメインディレクトリにファイルをコピーしましたが、それでも動作しませんでした。

私を助けてくれてありがとう!


main.cppに

#include <stdio.h> 

extern "C" { 
    #include "lua.h" 
    #include "lualib.h" 
    #include "lauxlib.h" 
} 

lua_State* L; 

int main(int argc, char *argv[]) 
{ 


    /* initialize Lua */ 
    L = luaL_newstate(); 

    /* load Lua base libraries */ 
    luaL_openlibs(L); 

    /* load the script */ 
    luaL_loadfile(L, "test.lua"); 

    lua_call(L, 0, 0); 

    /* cleanup Lua */ 
    lua_close(L); 

} 
、あなたはのいずれかを使用していないので、これは実際にはQtに関連していない

-- test 

print("Hello World") 

答えて

1

Qtはデフォルトのパスとしてユーザのディレクトリを使用しているようです。すべてが魔法のように動作し、このフォルダにLUAスクリプトを入れるときは(感謝Rich

QDir dir("."); 
qDebug() << dir.absolutePath(); 

あなたはでこれを検証することができます。作業ディレクトリは、次のコマンドで設定することができます

QDir::setCurrent() 

そして

QCoreApplication::applicationFilePath() 

との組み合わせでパスはexeファイルがで辞任どこに設定することができ

0

ファイルtest.luaあなたのソフトウェアのQt API。

lual_loadfileメソッドから返されたステータスをthis exampleのようにチェックする必要があります。それは間違っていることについてあなたにいくつかの追加の手がかりを与えるはずです。

場合によっては、興味のあるQtLua moduleがあります。

+0

ねえ、。迅速な答えをありがとう! ファイルを読み込めませんでした:test.luaを開くことができません:そのようなファイルやディレクトリがありません と私はもしあれば、私はメッセージが私に与えるメッセージがそれはそれを見つけることができません。 012を-1に-2に変更してください。 ファイルをロードできませんでした:(ヌル) QtLuaは有望そうですが、私は「手動」の方が好きです。 – codewing

+0

あなたはどのOSですか? – SGaist

+0

現在Win10(64ビット)にあります – codewing

1

これはランタイムファイル操作であるため、関数は現在のディレクトリのみを検索している可能性があります。

+0

コンパイルされたデバッグアプリケーションがどこから実行されているのか知っていて、そこにもLuaファイルを追加しましたが、残念ながらうまくいきませんでした。私はまた、そのディレクトリの親ディレクトリに追加しようとしましたが、これはうまくいきませんでした。 – codewing

+0

アプリケーションを起動する場所にファイルを置きます。 – Rich

+1

あなたはどこから処刑されているのか確かですか?あなたはIDEを使っているようですね? – Rich

関連する問題