いつもお世話になっています。Kettyです(^_^)
リソーススクリプト(.rcファイル)にて、
#ifdef _DEBUG~#else~#endifで、DebugビルドとReleaseビルドで、リソースするファイルを分岐する方法を教えてください。
私は、以下のように実験してみたのですが、
Debugビルドしても、#ifdefがtrueのケースのファイルがリソースされません。
なお、Releaseビルドすると、#elseのケースでリソースされることは確認できました。
どこが間違えているのでしょうか?
それとも根本的に、リソーススクリプトではこのような分岐は不可能なのでしょうか?
↓ここを見ると、できるように思えました。
http://fjiblog.cocolog-nifty.com/blog/2 ... -56d2.html
OS:Windows7 64bit HomeEdition
Visual Studio 2010 ExpressEdition
※DXライブラリを使っています。
Resource.rc
// Microsoft Visual C++ generated resource script.
//
#include "Resource.h"
#ifdef _DEBUG
// Debugビルド時はファイルAをリソースする
TEST_RESOURCE Text "A.txt"
#else
// Releaseビルド時はファイルBをリソースする
TEST_RESOURCE Text "B.txt"
#endif
#ifndef RESOURCE_H
#define RESOURCE_H
#ifdef _DEBUG
// Debugビルド時はAを使う
#define TEST_RESOURCE 100
#else
// Releaseビルド時はBを使う
#define TEST_RESOURCE 200
#endif
#endif
#include "DxLib.h" // DXライブラリ用
#include "Resource.h" // リソース用
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
// DXライブラリのログ出力をしない
DxLib::SetOutApplicationLogValidFlag( FALSE ) ;
// ウィンドウモードで起動
DxLib::ChangeWindowMode( TRUE ) ;
// DXライブラリ初期化処理
if( DxLib::DxLib_Init() == -1 ){ return -1 ; }
// 画面表示の文字色を設定
const int color = DxLib::GetColor( 255, 255, 255 ) ;
// Debug or Releaseを画面に表示
#ifdef _DEBUG
DxLib::DrawString( 0, 0, "Debugモード", color ) ;
#else
DxLib::DrawString( 0, 0, "Releaseモード", color ) ;
#endif
// アプリケーションのインスタンス ハンドルを取得する
HINSTANCE hInst = GetModuleHandle( NULL ) ;
if( hInst != NULL )
{
// リソースの種類はテキストファイル
LPCTSTR pResourceType = "text";
// 目的のリソースを探す
HRSRC hRes = FindResource( hInst, MAKEINTRESOURCE( TEST_RESOURCE ), pResourceType ) ;
// 見つかったかどうかを画面表示
if( hRes == NULL )
{
DxLib::DrawString( 200, 200, "リソース不明ですorz", color ) ; // Debugビルドすると必ずここに来てしまう
}
else
{
DxLib::DrawString( 200, 200, "リソースあったよ!(^o^)", color ) ; // Releaseビルドするとここまに来れる
}
}
// キー入力待ち
WaitKey() ;
// DXライブラリ終了処理
DxLib::DxLib_End() ;
// ソフトの終了
return 0 ;
}