2017-01-13 7 views
-1

Webアプリケーション用にC++ライブラリを使用する予定で、Webアセンブリはこのための良いツールのようです。私はそれをコンパイルするためにemscriptenを使用しています。Webアセンブリ:C++ライブラリでemscriptenを使用する

私は、このオープンソースのC++ライブラリのソースコードを持って、とemmakeを作るemmakeを使用してそれを作った、私は私の/usr/local/<name of open source>/libだけでなく、ヘッダファイルでは.aライブラリを持っていたこれらの二つの呼び出し後

をインストールしますin私の/usr/local/<name of open source>/include

また、このオープンソースライブラリを使用するサンプルのcppコードもあります。

質問:このcppファイル用のhtmlファイルを作成するにはどうすればよいですか? そのようなファイルの名前は「TEST.CPP」 であると私は、このコマンドを試してみましたが、それは「未解決のシンボル」

em++ -I/usr/local/<name of open source>/include -L/usr/local/<name of open source>/lib test.cpp -s WASM=1 -o final.html 

の多くは、その後、私は私のローカル上でWebサーバーを実行するためにemrunと呼ばれる原因となりますが、 final.htmlは私がそれが表示すると予想したものを表示していませんでした。

私を助けてもらえますか?

unresolved symbol warnings in the console

+0

これはWebAssemblyに固有のようではありません。あなたはEmscriptenの定期的なasmに従うことができますか?あなたは同じエラーが表示されますか?もしそうなら、これらのエラーは何ですか?さらに、 '/ usr/local'を使用することはできませんか? Emscriptenには独自のCおよびC++標準ライブラリがあります。 –

+0

こんにちは、それは私が使用しようとしている標準ライブラリではありません開発者が科学的研究のためのいくつかの強力な計算を行うために開発されたオープンソースプロジェクトです。また、私はEmscriptenの通常のasm.js命令に従ってみましたが、動作していないようです。 –

+0

JF Bastien: "Emscriptenには独自のCおよびC++標準ライブラリがあります"と書いてあります。あなたはこれを拡大できますか? Tnx – backspaces

答えて

0

あなたのライブラリが満たされていない依存関係(未解決のシンボル)を有することができるように見えます。 emscriptenビルドはクロスビルドです。つまり、インストールされているシステムライブラリを使用できません。代わりにemscriptenコンパイラですべての依存関係を構築する必要があります。 Emscriptenは未解決のシンボルが警告であるという不幸な動作をします(他のリンカーはこれらをエラーとみなします)が、プログラムを持っていればプログラムは動作しそうにありません。

0

emscriptenを使用して、インクルードされたライブラリのcppファイルをコンパイルしていないことを示す警告(エラー)が表示されます。 test.cppファイルのほかに、プロジェクトがem ++コマンドに必要とするすべてのファイルを提供する必要があります。詳細については、 hereをお読みください。

あなたの質問の他の部分に来ると、emscriptenはあなたが "公開する" C++関数のJS関数を作成するだけです。 (明らかに、これらの公開された関数によって呼び出される関数もコンパイルされ、残りは取り除かれます)。

あなたの機能が公開されたら、これを達成するには小さなチュートリアルではhere

を見つけることができる、あなたは(例:JSイベントにそれらを結合)、独自のJSコードから呼び出す

0

Emscriptenは未解決の扱いません。シンボルはさまざまな理由でコンパイルエラーとして発生します。

プロジェクトをコンパイルするときに、生成された.aライブラリもリンクする必要があります。 使用した-Iおよび-Lオプションは、プログラムにリンクするライブラリを探す場所を指定しますが、リンクするライブラリは指定していません。

コンパイルコマンドにオプション-l<name of your library>を追加して、プログラムとリンクさせるように指定する必要があります。

関連する問題