HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2014
0907
rego64bit版Windows上でHSP終了時にランタイムエラーになる13解決


rego

リンク

2014/9/7(Sun) 02:21:20|NO.64728

Windows8.1(64bit)+hsp3.4RC1で以下のスクリプトを実行するとVisual C++ランタイムエラーが出ます。
たぶん32bit版ではエラーは出ないです。

mes "まずボタンを押します" button gosub "", *l stop *l mes "そのまま終了するとエラーが出ます。" repeat wait 10 loop



この記事に返信する


kanahiron

リンク

2014/9/7(Sun) 02:39:50|NO.64729

HSP3.4β1辺りからランタイムエラーは出なくなっていますよ



skyblue

リンク

2014/9/7(Sun) 10:18:57|NO.64731

>HSP3.4β1辺りからランタイムエラーは出なくなっていますよ
βの次がRCのはずなので間違いです。
ランタイムエラーの詳細を投稿してください。
場合によっては修正してくださいます。



mirage17

リンク

2014/9/7(Sun) 19:12:48|NO.64740

 Windows8.1(64bit)+hsp3.4RC1ですが、regoさんのスクリプトを実行したり、
実行ファイルを作って、実行したりしてみましたが、私の環境では、
正常終了しました。
 ですが、4年前に作った私のゲームでは、終了時にランタイムエラーが
でました。Visual C++ランタイムエラーの事です。当時はvistaで開発
していたので、Windows8.1(64bit)には対応してなかったのかもしれません。

私の環境
CPU : Intel Core i5-3570K [3.40GHz/4Core/HD4000/TDP77W] IvyBridge 搭載モデル
MEMORY : 8GB DDR3 SDRAM PC-10600 [4GB*2枚/メジャーチップ・6層基盤]
VGA : GeForce GT640 1GB [DVI/D-Sub/HDMI]
OS : Microsoft(R) Windows8 (64bit)DSP版(Windows8.1にバージョンアップ済み)



rego

リンク

2014/9/8(Mon) 02:33:58|NO.64748

> 私の環境では 正常終了しました。
そうなんですか。
私の環境ではエディタ上から実行して、ボタンを押してから終了するとエラーのダイアログが出ます。
念のため新しいフォルダに新規インストールして試してみましたが同じでした。
ですがさらに古いバージョンをいくつか入れてみて試してみたところ以下のようになりました。

3.32β2->エラーは出ないがプロセスが残る
3.32RC1->問題ない
3.32a->エラーダイアログが出る
3.4β1->エラーダイアログが出る

エラーダイアログの内容は以下です。

---------------------------
Microsoft Visual C++ Runtime Library
---------------------------
Runtime Error!

Program: C:\hsp34\hsp3.exe



This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.


---------------------------
OK
---------------------------



mirage17

リンク

2014/9/8(Mon) 04:41:53|NO.64750

 もう一度regoさんのスクリプトを実行しましたが、これは正常終了でした。
そこで、4年前に作成したゲームを実行して、終了時にでるランタイムエラー
の内容を見た所、このような結果になりました。

---------------------------
Microsoft Visual C++ Runtime Library
---------------------------
Runtime Error!

Program:
D:\hsp2010\007\magicalclaises\makecgdir\magicalclaises.exe


This application has requested the Runtime to terminate it in an unusual way.
Please contact the application's support team for more information.


---------------------------
OK
---------------------------

簡単に英訳すると、Visual C++の開発元である、マイクロソフトかHSPの運営
のサポートに連絡して対応してください。と書いているように思います。

私の場合、ゲームの実行ファイルまでの絶対パスを表示してエラーが出ています。
regoさんの場合は、HSPの実行ファイルまでの絶対パスを表示してエラーが出ている
模様。ここで解決できなければ、HSPの運営にメールして聞いてみるか、マイクロソフト
に聞いてみるかしてみるのが、対処法なのではないかと思われます。問題があれば、
そうすれば、次のバージョンなどで、修正してもらえるかもしれません。

ネットで調べるとこのような回答が出てきました。参考になるかもしれません。

「onexitを入れてその先にendで終了させる」を試したら、
ランタイムエラーは出なくなったようです。

■原因

必要な「Visual C++ ライブラリ」がインストールされていないことが原因と考えられる。
■解決策

Microsoft ダウンロードセンターで「Visual」のキーワードで検索して引っかかる
「Microsoft Visual C++ 2010 再頒布可能パッケージ (x86)」といった名称のパッケージ
をインストールする。OSのバージョンや32bit or 64bitでも対応するパッケージ
が異なるので、システム要件を確認してからインストールすること。



mirage17

リンク

2014/9/8(Mon) 04:58:15|NO.64751

追記

Microsoft Visual C++ 2010 再頒布可能パッケージ (x86)

私の環境では、上記のパッケージを入れても、状況は改善
しなかったので、2つの方法を試してみて、この掲示板に
聞いてみて無理だったら、HSPの運営にメールでサポート
してもらう方が良いと思われます。



A.C

リンク

2014/9/8(Mon) 19:09:23|NO.64765

Windows8.1(64bit)+hsp3.4RC1で同様にランタイムエラーが発生しました。
以前問題になっていたWin8環境の終了時に発生するランタイムエラーは
3.32β1の修正後発生していないのでその件とは別物じゃないかなーと思います。
でも同じOS/バージョンで発生しない方もいるということは環境依存ぽいですね…。

いろいろ試してみました。
・ボタンを押さずに終了→当たり前ですがエラーなし
・button gosubの代わりにbutton goto→エラーなし
・button gosubの代わりに普通のgosub→エラーなし
・button gosubの代わりにonkey gosub/onclick gosub/oncmd gosub→エラーなし
・*lのrepeat〜loopをreturnに変更→エラーなし
・*lのrepeat〜loopをendに変更→エラーなし
・*lのrepeat〜loopをstopに変更→エラー発生
・*lのrepeat〜loopをwait 1000に変更し、wait中に終了→エラー発生
・×ボタンの代わりにAlt+F4→エラー発生
・onexitで終了処理を作っておく→エラー発生

同じgosubで飛ぶにしてもボタンの時だけエラーが出ました。
まあ、そもそもgosubで飛んでreturnで戻らないという書き方自体普通はしないので
この現象に遭遇することはまずないと思いますが、でもちょっと気になりますねー…



さっくん

リンク

2014/9/8(Mon) 19:39:57|NO.64766

>Microsoft Visual C++ 2010 再頒布可能パッケージ (x86)
これって必ずINSTしないといけないんですか?



ななし

リンク

2014/9/8(Mon) 19:44:07|NO.64767

メイン環境(Windows 8.1 x64 + HSP 3.32b)ではエラーが出ませんでした
Visual Studioを入れているのでVisual C++ライブラリは入ってたかと思います。

気になったので仮想環境にWindows 8 x64 + HSP 3.32bをインストールして上記の
スクリプトを実行したところ、ランタイムエラーが発生しました。
button gosubをbuttonだけにしてみたところ、エラーは発生しませんでした。

なぜC++ランタイムをインストールしてあればエラーが出ないのか不思議です



mirage17

リンク

2014/9/8(Mon) 19:46:40|NO.64768

>さっくんさん

>Microsoft Visual C++ 2010 再頒布可能パッケージ (x86)
>これって必ずINSTしないといけないんですか?

いえ、通常はHSPの場合、インストールする必要はないと思います。

私の環境で、2005年 2008年 2010年 2012年
の>Microsoft Visual C++ 再頒布可能パッケージ (x86)及び(x64)
を入れてみましたが、改善しなかったです。

インターネットで調べた時の答えには出てきましたが、
結果は自体を打開できませんでした。



mirage17

リンク

2014/9/8(Mon) 19:59:55|NO.64769

 ちなみにVisual Studioについては、VS Express 2013 for Desktopと、
Microsoft Visual C++ 2010 Express をPCの中にインストール済みです。
両方とも、マイクロソフトのサイトから、無料で手に入るものです。
このスレのHSPの話題に関係あるかどうかはわかりません。



zakki

リンク

2014/9/8(Mon) 22:00:25|NO.64777

> 3.32β2->エラーは出ないがプロセスが残る
> 3.32RC1->問題ない
> 3.32a->エラーダイアログが出る

だとするとこの辺りの変更ですね。
http://dev.onionsoft.net/trac/openhsp/changeset?old_path=%2Ftrunk&old=574&new_path=%2Ftrunk&new=578

Windows7 64bitだと例示されている手順ではエラー無しで終了しますが、
ボタンを20回くらい連打すると×ボタンを押してから終了まで時間かかるようになります。

button gosubからreturnしないとcmdfunc_gosubのイベントループのネストが延々と
増えていくあたりの動作がなんとなく奇妙に見えます。



おにたま(管理人)

リンク

2014/9/8(Mon) 23:38:07|NO.64779

ご報告ありがとうございます。
Windows8.1 64bitでエラーが出ることを確認しました。
原因を調べて修正させて頂きます。
ボタンの処理先でwaitを含むループを入れることはあまり推奨していませんが、エラーが出ること自体は問題ですね。
エラー自体は、VC++で自動的にリンクされるC++ Runtime Libraryが生成しています。
ランタイムの再頒布可能パッケージの有無は関係ありません。
Windows7ならば大丈夫なのが不思議です。



ONION software Copyright 1997-2023(c) All rights reserved.