トップページ > 記事閲覧
DXライブラリ HTML5版 Visual Studio対応について
名前:かめのこにょこにょこ 日時: 2020/04/02 19:02

ご無沙汰しております。かめのこにょこにょこです。 この度、DXライブラリ HTML5版 (プロジェクトコード:DxLibForHTML5) の Visual Studio 対応に目途がついたので、 その報告のために新たにスレッドを建てさせていただきました。 以前より DXライブラリ HTML5版に関しては、次のスレッドで開発を進めていました。 - [freetypeを使用して文字を描画すると間延びする](dxlib.xsrv.jp/cgi/patiobbs/patio.cgi?mode=view&no=4825) 今現在、Visual Studio で DXライブラリ HTML5版を使ったアプリ開発をするには、次のツールをインストールする必要があります。 - emscripten (Download and Install) <emscripten.org/docs/getting_started/downloads.html> - emscripten (C/C++ を JavaScript/WebAssembly にトランスパイルするツール) の Visual Studio 2017用のテンプレート <marketplace.visualstudio.com/items?itemName=KamenokoSoft.emscriptenproj1> - DXライブラリ HTML5版 プロジェクトに追加すべきファイル <github.com/nokotan/DxLibForHTML5/releases> まだ製作段階であり、手元の環境でのみ動作確認が取れていないため、動作確認およびバグや使いづらいところの指摘を皆様にお願い申し上げたいです。 ご協力お願いいたします。 なお、次の項目については順次対応する予定でございます。 - 詳細なインストール手順とビルド手順の追加 - 依存ライブラリのリンク簡略化 (-lDxlib -lDxUseCLib -lDxDrawFunc -s USE_OGG=1 -s USE_VORBIS=1 -s USE_LIBPNG=1 -s USE_LIBJPEG=1 -s USE_ZLIB=1 -s USE_BULLET=1 -s USE_FREETYPE=1 と長い追加のオプションを記述する必要があります) また、emscripten 側にビルドの失敗につながる既知の問題がいくつかあります。 - 文字エンコードの違いが原因でビルドが失敗する (python 2.x系を使うことで回避可能) - preload-file を使ったフォルダのパッケージ化に失敗する (原因解明中)
メンテ

Page: 1 | 2 | 3 |

Re: DXライブラリ HTML5版 Visual Studio対応について ( No.4 )
名前:管理人 日時:2020/04/05 04:13

手順の掲載ありがとうございます 無事 emscripten をインストールできました 手順に沿って再びビルドするところまで来たのですが、今度は 1>C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets\Platforms\Emscripten\PlatformToolsets\emcc\Toolset.targets(26,5): error MSB6004: 指定された実行可能タスクの場所 "\upstream\emscripten\\emcc.bat" が無効です。 というエラーが発生してしまいました 原因が何か分かりますでしょうか? m(_ _;m
メンテ
Re: DXライブラリ HTML5版 Visual Studio対応について ( No.5 )
名前:かめのこにょこにょこ 日時:2020/04/06 02:06

Visual Studioがemcc.bat (emscriptenに付属しているコンパイラ) を見つけられていないことが問題のように見受けられます。 Visual Studio 側のプロジェクト設定において、 emscripten/C++ ディレクトリ > emscripten ツールチェイン > emscripten インストールディレクトリ に emsdk 内の emcc.bat があるフォルダ [ (emsdk のインストールしたフォルダ)\upstream\emscripten ] を指定してみていただけないでしょうか。 - - - 追伸1 少し前に、emsdk のインストール時にダウンロードされる python が 3.x になってから、デフォルトの設定ではコンパイルに失敗するようになっています。 詳細は github.com/emscripten-core/emscripten/issues/10551 をご覧ください。 - - - 追伸2 emsdk のインストール時の環境変数の登録にも python3.x への移行で失敗するようになっており、その原因も調査しております。 これについても、何か進展がありましたら報告させていただきます。
メンテ
Re: DXライブラリ HTML5版 Visual Studio対応について ( No.6 )
名前:管理人 日時:2020/04/08 06:48

ご返答ありがとうございます なんとかビルド成功するところまで行ったのですが、実行は成功しませんでした… ( 『ビルドとデバッグ』のご説明の通りに設定して実行したところ、コマンドプロンプトっぽい ウィンドウが一瞬表示されるだけで、特にプログラムの実行の結果( 四角形が動くプログラム )は 確認できませんでした ) プロジェクトフォルダ\Emscripten\Debug に作成される html ファイルをブラウザで開いたところ 以下のような表示のままで、四角形が左右に動く画面が表示されることはありませんでした https://dxlib.xsrv.jp/temp/EmscriptenTest.png コンパイルしたプログラムはこちらです #include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { int x, add ; // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1 ; // 描画先を裏画面にする SetDrawScreen( DX_SCREEN_BACK ) ; // メインループ x = 0 ; add = 8 ; while( ProcessMessage() == 0 ) { // 移動 x += add ; if( x < 0 || x > 640 ) add = -add ; // 画面のクリア ClearDrawScreen() ; // 四角形の描画 DrawBox( x, 240 - 32, x + 64, 240 + 32, GetColor( 255,255,255 ), TRUE ) ; // 裏画面の内容を表画面に反映 ScreenFlip() ; } // DXライブラリの後始末 DxLib_End() ; // ソフトの終了 return 0 ; } 何が原因か分かりますでしょうか?
メンテ
Re: DXライブラリ HTML5版 Visual Studio対応について ( No.7 )
名前:kanamaru 日時:2020/04/08 07:30

原因がわかるも何もwinmainのプログラムがそのままは動かないってだけだと思います。 vscodeでビルドするのがgithubに公開されています。 それをgitでクローンしてMain.cppを好きなエディタで開いてみてください。 それを見る限り、プログラムがかなり通常と異なるようです。 なのでそれを参考にプログラムを書き換えればいいと思います。
メンテ
Re: DXライブラリ HTML5版 Visual Studio対応について ( No.8 )
名前:かめのこにょこにょこ 日時:2020/04/08 20:07

> なんとかビルド成功するところまで行ったのですが、実行は成功しませんでした… ビルドまで成功するようになって何よりです。 > プロジェクトフォルダ\Emscripten\Debug に作成される html ファイルをブラウザで開いたところ > 以下のような表示のままで、四角形が左右に動く画面が表示されることはありませんでした > > dxlib.xsrv.jp/temp/EmscriptenTest.png 出力される html ファイルはそれ単体では動作せず、ローカルWebサーバに配置するなどしてから開く必要がります。 emscripten には、デバッグ対象の html ファイルをローカルWebサーバを立ててからブラウザで開く emrun コマンドが用意されていますので それをご使用ください。 なお、Visual Studio のローカルデバッガの代わりに emrun コマンドを実行させる設定が以下の記事にございます。ご参考になさってください。 qiita.com/nokotan/items/5fa6f2d39ff7bb6641e8#ビルドとデバッグ また、kanamaru さんのご指摘の通り、エントリポイントには ```cpp int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) ``` のかわりに ```cpp int main() ``` を使う必要があります。 また、1フレームごとにブラウザ側に制御を戻さないとならない関係上、ゲームループ部分を mainLoop 関数に切り出した上で、 そのゲームループを1フレームごとに呼び出されるように登録する必要があります。 ```cpp emscripten_set_main_loop(mainLoop, 0, 1); ``` このサンプルが参考になると存じております。 github.com/nokotan/DxLibForHTML5-VSCode/blob/master/Main.cpp ただし、文字列描画への対応に関しても注意点がございますので、後日説明させてください。
メンテ
Re: DXライブラリ HTML5版 Visual Studio対応について ( No.9 )
名前:管理人 日時:2020/04/09 07:42

> kanamaruさん ご指摘ありがとうございます そうでした、WinMain ではなく main でした、以前 Main.cpp の内容を拝見していたのに失念していました orz > かめのこにょこにょこさん > なお、Visual Studio のローカルデバッガの代わりに emrun コマンドを実行させる設定が以下の記事にございます。ご参考になさってください。 > qiita.com/nokotan/items/5fa6f2d39ff7bb6641e8#ビルドとデバッグ こちらのデバッグの設定をした後は、F5キー押下で実行できるのでしょうか? とりあえずコードを以下のように修正して F5 で実行してみましたが、コマンドプロンプトウィンドウの ようなものが一瞬表示されて消えるだけで何も実行結果は確認できませんでした… #include <emscripten/html5.h> #include <emscripten.h> #include "DxLib.h" static bool shouldExit = false; int x, add ; void mainLoop() { if( ProcessMessage() != 0 ) { shouldExit = true; } // 移動 x += add ; if( x < 0 || x > 640 ) add = -add ; // 画面のクリア ClearDrawScreen() ; // 四角形の描画 DrawBox( x, 240 - 32, x + 64, 240 + 32, GetColor( 255,255,255 ), TRUE ) ; // 裏画面の内容を表画面に反映 ScreenFlip() ; } int main() { // DXライブラリの初期化 if( DxLib_Init() < 0 ) return -1 ; // 描画先を裏画面にする SetDrawScreen( DX_SCREEN_BACK ) ; x = 0 ; add = 8 ; emscripten_set_canvas_element_size("canvas", 1024, 600); emscripten_set_main_loop(mainLoop, 60, 1); // ソフトの終了 return 0 ; } こちらのサンプル https://github.com/nokotan/DxLibForHTML5-VSCode/blob/master/Main.cpp でも結果は同様でした
メンテ
Re: DXライブラリ HTML5版 Visual Studio対応について ( No.10 )
名前:kanamaru 日時:2020/04/09 09:29

ふと思ったんですけど、 このHTML5版dxlibって公式に取り込まれることはあると思いますか? ついでに関係ない話なんですけど、 例えばの話なんですが、 エントリポイントってdxlib独自のものを採用することってありだと思いますか? int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { DxMain(); } int android_main( void ) { DxMain(); } int ios_main( void ) { DxMain(); } こんな感じのものをdxlib.hに書いておいて、 dxlibを使う人にはDxMain()を定義してもらえばエントリポイントの名前が場合によって違う問題が解決する気がします。 (試してないのでうまくいくかはわかりません。) たぶん最適化で他の環境用の関数は消えるし。 mainにせずにDxMainにしたのはのちにHTML5版も込みで同じことができるようにするためです。
メンテ
Re: DXライブラリ HTML5版 Visual Studio対応について ( No.11 )
名前:yumetodo 日時:2020/04/09 11:48

最近追っかけてなかったですが、まだこの試みが続いていることを知りました。 ところで github.com/emscripten-core/emscripten/issues/10551 github.com/emscripten-core/emscripten/issues/10802 などを見て思っていたのですが、emsdkから読まれるファイルをUTF-8 with BOMにすればうまく行ったりしませんでしたっけ?
メンテ
Re: DXライブラリ HTML5版 Visual Studio対応について ( No.12 )
名前:かめのこにょこにょこ 日時:2020/04/09 15:33

> 管理人 さん > > > かめのこにょこにょこさん > > > なお、Visual Studio のローカルデバッガの代わりに emrun コマンドを実行させる設定が以下の記事にございます。ご参考になさってください。 > > qiita.com/nokotan/items/5fa6f2d39ff7bb6641e8#ビルドとデバッグ > > こちらのデバッグの設定をした後は、F5キー押下で実行できるのでしょうか? その把握で問題ございません。 > とりあえずコードを以下のように修正して F5 で実行してみましたが、コマンドプロンプトウィンドウの > ようなものが一瞬表示されて消えるだけで何も実行結果は確認できませんでした… 次の項目をお試しいただけないでしょうか。 - [Ctrl]+[F5] でのデバッグなし実行 - python.exe に対してパスが通っているかどうかの確認 - 次のデバッグ設定の試用 |設定名|設定| |:--:|:--:| |コマンド|"$(EmscriptenDir)emrun.bat"| |コマンド引数|"$(TargetPath)"| > yumetodo さん > > ところで > github.com/emscripten-core/emscripten/issues/10551 > github.com/emscripten-core/emscripten/issues/10802 > などを見て思っていたのですが、emsdkから読まれるファイルをUTF-8 with BOMにすればうまく行ったりしませんでしたっけ? アドバイスありがとうございます。 手元のプロジェクトで PYTHONUTF8=1 を環境変数に設定すると Python 3.7 でコンパイルが成功するところまでは確認できています。 ご指摘から、ソースファイルのエンコーディングによるコンパイルの可否を調査いたします。
メンテ
Re: DXライブラリ HTML5版 Visual Studio対応について ( No.13 )
名前:かめのこにょこにょこ 日時:2020/04/09 15:40

蛇足ですが、管理人さんの試されたソースコードを WebAssemblyStudio において実行してみました。 次のリンクからご確認いただけます。 nokotan.github.io/WebAssemblyStudio/?f=mf109abi9q9 画面上部の [Build & Run] をクリック/タップしてビルドおよび実行ができます。 (およそ 30MB のダウンロードを行いますので、スマートフォンからリンクを利用される場合はご注意ください。)
メンテ
Re: DXライブラリ HTML5版 Visual Studio対応について ( No.14 )
名前:yumetodo 日時:2020/04/10 00:43

> 蛇足ですが、管理人さんの試されたソースコードを WebAssemblyStudio において実行してみました。 おお、動いていますね(げっ、gulpだ、逃げろ!(gulpにいい思い出がない))
メンテ
Re: DXライブラリ HTML5版 Visual Studio対応について ( No.15 )
名前:管理人 日時:2020/04/10 08:03

> kanamaruさん > このHTML5版dxlibって公式に取り込まれることはあると思いますか? どなたに訊かれているのでしょうか? > エントリポイントってdxlib独自のものを採用することってありだと思いますか? 最初から独自のものにしていればありでしたが、今から独自のものにすると WinMain で書かれたプログラムを全部書き換えていただかなければならないので ちょっと難しいですね( WinMain で書かれた資料も全部そのままでは使えなくなりますし… ) > かめのこにょこにょこさん ご返答ありがとうございます > - [Ctrl]+[F5] でのデバッグなし実行 結果に変化はありませんでした > - python.exe に対してパスが通っているかどうかの確認 コマンドプロンプトで python[エンター] でpython が起動したので パスは通っていると思います > - 次のデバッグ設定の試用 結果に変化はありませんでした… > 蛇足ですが、管理人さんの試されたソースコードを WebAssemblyStudio において実行してみました。 おぉー、こちらではちゃんと動作していますね…
メンテ
Re: DXライブラリ HTML5版 Visual Studio対応について ( No.16 )
名前:kanamaru 日時:2020/04/10 09:23

html5版dxlibが公式に取り込まれることがあるかという話は 管理人さんとかめのこにょこにょこさん両方にしています。 管理人さんが取り込むのを決めて、 かめのこにょこにょこさんがバイナリかソースコードを提供しないと取り込めないですから。
メンテ
Re: DXライブラリ HTML5版 Visual Studio対応について ( No.17 )
名前:かめのこにょこにょこ 日時:2020/04/10 22:53

DxLib HTML5版の公式への採用に関して、 ソースコード、バイナリいづれの形式でも提供させていただきたいと考えております。
メンテ
Re: DXライブラリ HTML5版 Visual Studio対応について ( No.18 )
名前:管理人 日時:2020/04/11 06:34

> かめのこにょこにょこさん > DxLib HTML5版の公式への採用に関して、 > ソースコード、バイナリいづれの形式でも提供させていただきたいと考えております。 なんと、ありがとうございます m(_ _)m > kanamaruさん かめのこにょこにょこさんのご返答を踏まえてのご返答となりますが、 まだ『公式のDXライブラリとしてHTML5版を提供』となるかは未知数です というのも、仮にそうしようとした場合、私一人でHTML5版の更新やサポートを できなければいけないのですが、今のところそれができるだけの知識が無いので 勉強するところから始める必要がある為です なので、まずは手元で実行できるようになるところから…
メンテ
Re: DXライブラリ HTML5版 Visual Studio対応について ( No.19 )
名前:kanamaru 日時:2020/04/11 10:26

最初は、将来的には公式になるのかと驚いたんですが、 そもそも、その言い方から察するに管理人さんが一人で更新やサポートをしていたということですか。 そこでいっそのこと提案なんですが、 dxlibってオープンソースですよね。だったら複数人体制に切り替えて更新やサポートをするようにしたらどうでしょう。 おそらくこの掲示板には協力してくれる人はたくさんいると思いますし、 複数人で更新やサポートをするように切り替えても批判なんか来るわけありません。 むしろ今まで一人でやっていたなら本当にすごいことなんですから。 もともとwindowsでしか動くことを想定していないはずのdxlib。(いまさらですがdxってdirectxの略だろうし、デラックスじゃないですよね) もうすでに動く環境はwindowsなんて壁もうありませんし。 ということで複数人体制に切り替えることを提案します。 かめのこにょこにょこさんにお願いがあるんですが、 もしこの提案を管理人さんが受け入れて複数人体制になったらHTML5版の更新やサポートは可能ですか? また、他のこの掲示板を見ている人へ 複数人体制になることに賛成、あるいは協力してくれる人は申し出てください。 本当は複数人体制でやることが決まってから、 管理人さんが受け入れたら集めるべきなのですが、 管理人さんが受け入れるかわかりませんし、協力してくれる人がいれば受け入れやすくなると思います。 ちなみにこんな提案をしておきながら、僕には協力できることはたぶんほとんどありません。 とりあえず、今まで以上にこの掲示板を見るようにしてできる限り答えられそうな質問とかに答えていきます。
メンテ
Re: DXライブラリ HTML5版 Visual Studio対応について ( No.20 )
名前:かめのこにょこにょこ 日時:2020/04/11 17:47

> 管理人さん プロジェクトのデバッグ実行ができない現象に関してですが、 |設定名|設定| |:--:|:--:| |コマンド|cmd.exe| |コマンド引数|/C "$(EmscriptenDir)emrun.bat" $(TargetFileName)"| |作業ディレクトリ|$(TargerDir)| を試していただきたいです。 > kanamaruさん > かめのこにょこにょこさんにお願いがあるんですが、 > もしこの提案を管理人さんが受け入れて複数人体制になったらHTML5版の更新やサポートは可能ですか? 可能です。
メンテ
Re: DXライブラリ HTML5版 Visual Studio対応について ( No.21 )
名前:管理人 日時:2020/04/13 05:40

> かめのこにょこにょこさん > プロジェクトのデバッグ実行ができない現象に関してですが、 >  > |設定名|設定| > |:--:|:--:| > |コマンド|cmd.exe| > |コマンド引数|/C "$(EmscriptenDir)emrun.bat" $(TargetFileName)"| > |作業ディレクトリ|$(TargerDir)| >  > を試していただきたいです。 試してみたところ 『デバッグを開始できません。プロジェクトのプロパティを開き、[構成プロパティ]->  [デバッグ]の順に移動して、デバッガーの設定を確認してください』 と表示され、実行することができませんでした… ( スクリーンショットです ) https://dxlib.xsrv.jp/temp/EmscriptenErrorCapture.png > kanamaruさん > dxlibってオープンソースですよね。だったら複数人体制に切り替えて更新やサポートをするようにしたらどうでしょう。 複数人体制に切り替える予定はありません
メンテ
Re: DXライブラリ HTML5版 Visual Studio対応について ( No.22 )
名前:かめのこにょこにょこ 日時:2020/04/16 15:30

ようやく手元でも emrun の起動に失敗する現象の再現に成功いたしました。 そのため、手元の環境の状況を元に emrun の起動の失敗原因およびその解決方法を説明させていただきます。 emrun コマンド自体が python の pywin32 に依存しており、 emsdk のインストール時に同時にインストールされる python3.x または デフォルトでインストールされる python3.x には pywin32 がインストールされていないことが原因でございました。 さらに、Microsoft ストアからインストールすることのできる python には、pywin32 がインストールされているものの、 win32api モジュールが使用できないようになっているため、emrun コマンドを実行できないことも判明いたしました。 管理人さんの環境におきましても - pip コマンドが有効であること - `pip list` を使用して pywin32 がインストールされていること もし、pip コマンドが有効であれば、`pip install pywin32` で pywin32 をインストールすることができます。 もし、pip コマンドが有効でなければ、<qiita.com/suzuki_y/items/3261ffa9b67410803443#windows環境手順> を参考に pip のインストールをお願いします。
メンテ
Re: DXライブラリ HTML5版 Visual Studio対応について ( No.23 )
名前:kanamaru 日時:2020/04/13 14:11

ふと思ったんですけど、emrunにこだわる必要ってありますか? pythonのインストールは必ずしてあると考えていいはず。 pythonのコマンドラインから起動できるwebサーバー使えばいいのでは? たぶん管理人さんが無事ビルドに成功しても今後同じ現象になる人は絶対現れるはず。 だったら、pythonのwebサーバーでも問題ないならemrunを使う必要はないのではないでしょうか。 python2なら python -m SimpleHTTPServer 8080 python3なら python -m http.server 8080 で起動できます。
メンテ

Page: 1 | 2 | 3 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存