空です。簡略化されたJSライブラリは次のとおりです。QML JavaScriptの輸入は、私がJavaScriptライブラリをインポートQMLファイルを持っている
.pragma library
(function(global){
global.dcodeIO = global.dcodeIO || {};
global.dcodeIO.ProtoBuf = {}; // In reality, a complex object
})(this);
WindowsおよびLinuxでは、これは期待どおり動作します。後で私のQMLファイルでvar ProtoBuf = PB.dcodeIO.ProtoBuf;
と書いて、dcodeIO
プロパティが 'global'オブジェクトに追加され、必要なオブジェクトが適切に与えられていることがわかります。
ただし、別のプラットフォームでは、同じコードが機能しません。 cannot read property ProtoBuf of undefined
というエラーが表示されます。 QMLにデバッグ行を追加して表示します。
console.log(PB.dcodeIO); //-> undefined
for (var k in PB) console.log(k,PB[k]); //-> (no enumerable properties logged)
ただし、ライブラリ内のJavaScriptコードがロードされて実行されます。図書館内で上記のリンク先の後にconsole.log(global.dcodeIO)
を追加すると、[object Object]
が表示されます。
違いは何ですか? QtがJavaScriptファイルを実行しているが、グローバルオブジェクトをPB
に正常に関連付けることができない理由を特定するにはどうすればよいですか? JavaScript Environment Restrictionsの下に表示
どのプラットフォームで動作しませんか? – Mitch
@Mitch NVIDIA PX2で動作するNVIDIA V4L(Vibrante 4 Linux)です。 FWIW Qt開発者の問題をデバッグしていますが、まだ答えはありません。 – Phrogz
Qt 5.9と同じ問題 – uralbash