トップページ > 記事閲覧
タスクが残る症状について
名前:くるりん 日時: 2019/11/23 11:07

管理人様、 DXライブラリで長年プログラム作りの趣味を楽しませて頂いており、 大変感謝しております。ありがとうございます。 最近、作成したプログラムのタスクが残る症状に悩んでおります。 いろいろ原因の切り分けを行いましたが、以下のようなシンプルなプログラムでも タスクが残ってしまう事が分かりました。ただ別のPCではタスクは全く残らないので 恐らく現在使用しているPCもしはく環境が原因だと考えております。 <<環境>> OS: Windows10 DXライブラリ:Visual Studio Express 2013 for Windows Desktop用 (Ver 3.21b) <<プログラム>> #include "DxLib.h" int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) { int Cr; // ウインドウモードに変更 ChangeWindowMode(TRUE); if (DxLib_Init() == -1) // DXライブラリ初期化処理 { return -1; // エラーが起きたら直ちに終了 } // 白色の値を取得 Cr = GetColor(255, 255, 255); // 文字列の描画 DrawString(250, 240 - 16, "Hello C World!", Cr); WaitKey(); // キーの入力待ち(『WaitKey』を使用) DxLib_End(); // DXライブラリ使用の終了処理 return 0; // ソフトの終了 } <<症状>> ・PC起動後、最初の上記プログラム終了後、タスクは残りません。 ・2回目以降の実行、終了でタスクが残ります。タスクマネージャの詳細タブに見えます。 ・以降、実行、終了を繰り返すたびにタスクが発生し残っていきます。 ・タスクのが残っている為か、プログラム変更後再ビルドしようとしても  以下のメッセージが出てビルドはできません。 1>------ ビルド開始: プロジェクト:testsr, 構成:Debug Win32 ------ 1> main.cpp 1>LINK : fatal error LNK1168: ファイル C:\Users\RXK13\Desktop\Projects\testsr\Debug\testsr.exe を開いて書き込むことができません。 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========    その場合は残ったタスクをタスクマネージャで停止すれば再ビルド可能になります。 ・一からリビルドした後ならばタスクは残らないようです。 ・タスクが残る場合のLog.txtは以下で止まっています。タスクが残らない場合は「2362:COMを終了... 完了」が出ます。      :  1260:DirectSound の終了処理は正常に終了しました  1261:ウインドウを閉じようとしています  1267:ウインドウが破棄されようとしています  1267:ソフトを終了する準備が整いました <<原因切り分けの為に試した事>> ・常駐プログラムは可能な限り停止しましたが、症状変わらず。 ・Visual Sutdioを再インストールしましたが、症状変わらず。 ・DXライブラリのVer 3.21bをダウンロードして参照していますが、症状変わらず。 ・「VisualStudio Express 2013 for Windows Desktop を使用した場合のDXライブラリの使い方」にて  プロジェクトのプロパティの設定からやっても、症状変わらず。 でした。 原因調査のヒントを頂けますと幸いです。 お忙しいところ恐縮ですが、宜しくお願い致します。
メンテ

Page: 1 |

Re: タスクが残る症状について ( No.1 )
名前:管理人 日時:2019/11/25 01:51

他のPCでは発生しないとなりますと、お察しの通り環境に依存するものの可能性が高いと思いますので 原因の特定は難しいかもしれませんね… 対処方としましては以下のものがあると思います ・VisualStudio Community 2019 など、より新しい VisualStudio を使用してみる   古いバージョンの VisualStudio のデバッガや、作成される実行ファイルがOSの最新バージョンの動作に   対応できていなくて正常に動作しない、という可能性がありますので、最新バージョンの   VisualStudio で同様の現象が発生するか試してみるのは有効だと思います   ( 因みに VisualStudio は複数のバージョンを一つのPCに入れておけますので、インストールに   当たって VisualStudio Express 2013 for Windows Desktop をアンインストールする必要はありません ) ・DxLib_End を呼ばずに WinMain 関数から return する   DXライブラリのリファレンスでは DxLib_End を呼ばずに終了すると危険、と書いていますが、   NTカーネル系になった WindowsXP 以降では DxLib_End を呼ばずに終了しても問題なく終了できるようです   タスクが終了しない原因となっている動作の止まりは DxLib_End の中で発生しているようですので、   DxLib_End を呼ばずに WinMain から return してしまえば、恐らくタスクが残る現象は発生しなくなると思います   ( 『行儀の悪いソフト』ということになってしまいますが、特に問題は発生しないです( 明示的に    解放しないと残り続けるようなリソースをDXライブラリは使用していないので… ) ) ) よろしければお試しください m(_ _)m
メンテ
Re: タスクが残る症状について ( No.2 )
名前:くるりん 日時:2019/11/30 07:48

ご丁寧なご回答ありがとうございます。 DxLib_Endを呼ばずにWinMain関数からreturnすることで、 これまで残っていたタスクが全く残らなくなりました。 VisualSutudioは以前2017を試したのですが症状変わらずでした。 2019も試してみたいと思います。 これまで悩んでいた症状が解消できました。 ありがとうございます。 これでまた趣味のプログラム作りを楽しめそうです。 ありがとうございました! m(_ _)m
メンテ

Page: 1 |

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

   クッキー保存