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
でも結果は同様でした
![メンテ](https://dxlib.xsrv.jp/cgi/patiobbs/bbsimg//mente.gif) |
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
で起動できます。
|