問題タブ [emscripten]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
3 に答える
8895 参照

ubuntu - UbuntuへのEmscriptenのインストール

UbuntuにEmscriptenをインストールしようとしていますが、Emscriptenの公式インストールガイドには、LinuxにEmscriptenをインストールするための手順が記載されていません。インストールガイドが提供しなければならない唯一のアドバイスは次のとおりです。

If you are on Linux, things should be very simple for you and there is no need for any additional guide.

EmscriptenリポジトリのREADME.mdファイルも読みましたが、Ubuntuの説明もありません。UbuntuでEmscriptenをセットアップするには、どのような手順に従う必要がありますか?

0 投票する
2 に答える
1992 参照

makefile - Emscripten sudo enmake を実行しても「許可が拒否されました」

私は emscripten で遊んでいますが、この紛らわしいメッセージが表示され続けます

しかし、使用してもsudo同じエラーが発生します。

私はsudoerのリストに載っていて、ルートアクセス権があります...しかし、何をしても許可が拒否されます。何か案は?

0 投票する
1 に答える
1054 参照

javascript - Javascript/Jasmine: ReferenceError: 変数が見つかりません: Float64Array

私は Rails を使用していますが、javascript にはかなり慣れていませんJasmine。状況は次のとおりです。

  • Viz.jsソースで使用しています。これはGraphvizJSにコンパイルされていますEmscripten
  • 私は使用していますjasmine-rails
  • jasmineブラウザから正常にビルド
  • ただし、jasmine:headless(Qt webdriverを使用しています(Qtバージョン4.8.1を使用しています))、次のエラーが発生します:

    ReferenceError: Can't find variable: Float64Array

これは Viz.js から来ています

だから私の質問: Qt にエラーがあると結論付けてもFloat64Arrayいいですか? emscripten は厄介な仕事をしましたか? 回避策はありますか?

0 投票する
1 に答える
1974 参照

llvm - Emscripten でコンパイルした GMP lib を取得できません

Emscripten の最新バージョンでこちらの手順を試しました: https://github.com/kripken/gmp.js/blob/master/README.markdown

.a ファイルは正しく作成されているようです。次に、そのライブラリに対して(デバッグモードで)コンパイルしようとしましたが、うまくいくようです

ただし、生成された Javascript を実行しようとすると、次のエラーが発生します。

Emscripten Google グループの Alon (Emscripten の作成者) は、関数が存在しないことを意味し、llvm-vm で確認すると、次のように表示されます。

だから私は完全に途方に暮れています!

通常のコンパイラでビルドする場合、ライブラリに対してテストをコンパイルすると問題なく動作することに注意してください。

編集:これでさらに進みました。この lib のバージョン 5.1.1 では、一般的な C コンパイルを行う新しい構成オプション '--dissable-assembly' が導入されました。

ここでの問題は、テストの実行中に停止しないことです。

gmp.h の LIKELY および UNLIKELY オプションを「無効」にすることをお勧めします。

https://github.com/kripken/gmp.js/blob/master/gmp-h.in

しかし、それらを「無効にする」方法がわかりません。通常は 0 または 1 のオプションがありますが、ここでは表示されません。この特定のオプションが何をするのかさえ理解できません。

ありがとう

マルコス

0 投票する
1 に答える
3267 参照

filesystems - Filesystem FS を使用した Emscripten

FSEmscripten でをどのように使用するのか疑問に思っています。wiki に記載されていることはすべて実行したと思いますが、まだUncaught ReferenceError: FS is not defined. 結果の *.js ファイルでリテラルを検索するFSと、出現はありません。存在するはずだと思いました。

ここに私がこれまでに持っているコードがあります。

InfoMedia.cpp

でコンパイル

emcc -s EXPORTED_FUNCTIONS="['_int_sqrt']" InfoMedia.cpp -o InfoMedia.js

InfoMedia.js@pastebinでの結果

init_fs.js

example.html

これをクロムで実行した後、preRunが呼び出され、エラーが発生します。

さらに、コンパイル時にファイルを埋め込もうとすると

emcc -s EXPORTED_FUNCTIONS="['_int_sqrt']" --embed-file gizmo.webm InfoMedia.cpp -o InfoMedia.js

このエラーが発生しますUncaught TypeError: Object #<Object> has no method 'FS_createDataFile'

これは、生成された js ファイル内のこの行http://pastebin.com/Mu1qfG25 @ line 1460 にあります。Module['FS_createDataFile']('/', 'gizmo.webm', [26, 69, 223,....]), true, true);

結果の js ファイルに FS が挿入されることはありません。だから私がそのFSのものをどのように呼ぶかは問題ではありません。そのライブラリ機能を挿入するために追加する必要があるコンパイラ オプションはありますか?

0 投票する
2 に答える
1109 参照

c++ - clang と cmake で定義されているマクロを特定する最良の方法

私は現在、Emscripten と呼ばれる驚くべき LLVM->Javascript プロジェクトを使用して、CGAL を Javascript に変換しようとしています。私はこれをコアコンポーネントのみで行っています(ImageIOやQtのものではありません)

私はその依存関係の 2 つ (GMP と MPFR) でそれを行うことができました。驚いたことに、両方の C テスト クラスを Javascript にコンパイルすることができました (ビットコード形式で生成された LLVM ライブラリに対して)。nodejs で実行される出力は、ネイティブの結果と正確に一致します。

libboost-thread の 1 つを除いて、他のすべての依存関係はヘッダーのみ (Eigen、Boost) です。現在、明らかに JS はシングル スレッドであるため、これを CGAL コードから削除できることを望んでいます。幸いなことに、私が定義した CGAL_HAS_NO_THREADS マクロがあります。

そして、それは -D オプションとしてコマンドラインに渡されるようです

ただし、clang でコンパイルしようとすると (clang などをセットアップする Emscripten ツールを介して cmake を実行してセットアップします)、gcc でコンパイルするときには得られない大量のエラーが発生します。

1)まず、次のようなものです。

これにより、「不明なエンディアン」エラーが発生します。ClangコンパイラがGLIBCマクロを定義していないことが原因だと思いますか?

もう一つは次のようなものです。

ライブラリを見つけるために別のパッチ(またはパスのセット、またはパスの順序)を使用してclangにダウンしているようです。

どちらも明らかに少しずつハッキングできますが、それは「正しい」方法ではないと思います。

私が抱えている問題は、clang (または gcc) を実行するときに定義されているマクロをよく知っていることですか? /usr/include/ のルートにあるすべてのインクルードが何であるかもわかりませんか?

それらのいくつかはGNUCであり、これは何らかの方法で標準のlibcおよびlibcxxライブラリとは異なることを知っていますか? しかし、それらのすべてではありませんか?

どんな助けでも大歓迎です。

マルコス

0 投票する
1 に答える
240 参照

emscripten - Emscripten 完全言語コンパイルの推奨環境

Emscripten を使用して、 C ベースの言語を JavaScriptにコンパイルしたいと考えています。ドキュメントhereおよびhereは、成功率が環境に多少依存することを示唆しています。幸いなことに、仮想化を使用すると、ジョブに必要な環境を簡単に起動できます。大規模なプロジェクトをコンパイルするのに最適な Linux のフレーバーを提案できる人はいますか? その他の関連するヒントは大歓迎です。

0 投票する
6 に答える
12354 参照

javascript - Emscripten で Boost を使用する

Web アプリケーションに変換したい C++ プロジェクトがあります。この目的のために、Emscripten を使用してプロジェクトをビルドしたいと考えています。

プロジェクトは、いくつかの外部ライブラリを使用します。私はほとんどのライブラリのJavaScriptバージョンをコンパイルまたは見つけることができましたが、今はBoostのもので立ち往生しています。実際、Boost の開始方法も知りません。Boostrap スクリプトを使用してファイルを生成し、ライブラリを構築します。ツールセットをこのスクリプトに渡すことは可能ですが、Emscripten は明らかにサポートされていません。

私のプロジェクトでは、Boost の次の部分を使用しています: Thread、Regex、FileSystem、Signals、System。Emscripten を使用してこれらのライブラリをコンパイルするにはどうすればよいですか?

編集

npclaudiu の回答に従って、ライブラリを gcc ツールキットでブートストラップし、編集project-config.jamしてコンパイラを構成し、以下を置き換えました。

これで、入力によって./b2効率的にライブラリが構築されます。Boost.Signals と Boost.System は適切にコンパイルされます。他は若干の誤差があります。

Boost.Thread は不平を言います:

Boost.Regex は、CHAR_BIT が宣言されていないことについて多くの不平を言っていますが、emscripten では問題のようです:

Boost.FileSystem も emscripten が原因で失敗するようです:

0 投票する
2 に答える
8159 参照

emscripten - Emscripten での C++ クラスとの相互作用

Emscripten のチュートリアルでは、C 関数と対話する方法について適切に説明されています: https://github.com/kripken/emscripten/wiki/Interacting-with-code

しかし、C++ クラスとどのようにやり取りしますか。

  • コンストラクターを呼び出してオブジェクトを作成する
  • オブジェクトを削除する
  • クラスとそのメソッドのデッド コードの削除を防ぐ