なぜかPNGが読み込めない

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
missingno

なぜかPNGが読み込めない

#1

投稿記事 by missingno » 6年前

またお世話になります。
現在龍神録の館をみながらプログラミングの勉強中なのですが1つ問題が発生して困っています。
Visual C++上でデバッグを行うとなぜかPNGファイルを読み込んでくれません(CSVファイルも)。
コーディングの問題かと思って簡単なプログラムを組んでみましたが結果は同じでした。
また、これまたなぜかデバッグ後に生成される実行ファイルを直接起動すると正常に画像が表示されます。
理由がわからなくてモヤモヤしていますので、どなたか助言をお願いします。
組んだプログラムは以下のようです

コード:

#include "DxLib.h"

void load(int t[3][256])
{
	LoadDivGraph("../img/bullet.png",256,16,16,16,16,t[0]);
	LoadDivGraph("../img/myship.png",24,8,3,32,48,t[1]);
	LoadDivGraph("../img/enemy.png",256,16,16,32,32,t[2]);
}


int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
		ChangeWindowMode(TRUE);
        DxLib_Init();   // DXライブラリ初期化処理
		int graphic[3][256];
		load(graphic);
		DrawGraph(60,60,graphic[1][3],TRUE);
		DrawGraph(120,120,graphic[2][163],TRUE);
		DrawGraph(20,48,graphic[0][18],TRUE);
        WaitKey();      // キー入力待ち
        DxLib_End();    // DXライブラリ終了処理
        return 0;
}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: なぜかPNGが読み込めない

#2

投稿記事 by softya(ソフト屋) » 6年前

起動する状況により基準となるディレクトリが変わるからです。
exeから起動するとexeのあるディレクトリで、VC++から起動するとVC++のプロジェクトがあるディレクトリが基準となります。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
usao
記事: 1564
登録日時: 6年前

Re: なぜかPNGが読み込めない

#3

投稿記事 by usao » 6年前

便乗質問みたいになってしまいますが,
exeのある場所のパスを得るのに,いつも

 GetModuleFileName() → exeのファイル名部分を取り除く

という手順を踏んでいるのですが,これ以上に簡単な(楽な?なんか一発で得るような)方法ってあるでしょうか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 9年前
住所: 東海地方
連絡を取る:

Re: なぜかPNGが読み込めない

#4

投稿記事 by softya(ソフト屋) » 6年前

私もexeと同じ場所においてあるフォルダなどを得るためにGetModuleFileName()で得てますね。
カレントディレクトリはWin32APIなどで変化するので、これが確実だと思います。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

missingno

Re: なぜかPNGが読み込めない

#5

投稿記事 by missingno » 6年前

ディレクトリの書き方がわるかったのですね、勉強し直します。

閉鎖

“C言語何でも質問掲示板” へ戻る