none
C++プロジェクトファイルのVCResourceCompilerToolについて RRS feed

  • 質問

  • VCResourceCompilerTool について教えてください。

    VS2008で開発をしていますが、プロジェクトファイル上で下記の記述があります。

       <Tool
        Name="VCResourceCompilerTool"
        PreprocessorDefinitions="_AFXDLL;_DEBUG"
        Culture="1041"/>

    これは、リソースファイル(.rc)に適用されるオプションでしょうか?

    具体的には、「PreprocessorDefinitions(プリプロセッサの定義)」に上記のように「_DEBUG」がついている場合、リソースファイル上、有効なコードは①でしょうか?

    #ifdef _DEBUG
    FILEFLAGS 0x1L →①
    #else
    FILEFLAGS 0x0L →②

    上記の認識があっている場合、同じくプロジェクトファイルに下記のように記述されている中の、「PreprocessorDefinitions(プリプロセッサの定義)」から「_DEBUG」を削除した場合、有効なコードが②になってしまうということはないでしょうか?

       <Tool
        Name="VCCLCompilerTool"
        AdditionalOptions="/D &quot;WINVER=0x0501&quot;"
        Optimization="0"
        AdditionalIncludeDirectories="../include;../../../../Products/DbDa/include;../../../../Source/Common;../../../../Source/Engine;../../../../Source/LOBasis;../../../../Source/LocalDB;../../../../Source/Application/ApplicationDocument;../../../../Source/Application/ApplicationModel;../../../../Source/Application/AsynchronousEvent;../../../../Source/Application/Batch;../../../../Source/Application/ConnectionManager;../../../../Source/Application/ExternalApplication;../../../../Source/Application/ExternalInformation;../../../../Source/Application/IniFile;../../../../Source/Application/LayoutRule;../../../../Source/Application/LayoutRule/EtokiRule;../../../../Source/Application/LayoutRule/HeadlineRule;../../../../Source/Application/Log;../../../../Source/Application/ScriptEngine;../../../../source/accessories/LDBManager/include;../../../../source/accessories/LDBManager/LDb_LDba/include;../../../../source/accessories/LDBManager/LDB_Mngr/include;../../../../source/accessories/LDBManager/LDB_Hsrv/include"
        PreprocessorDefinitions="_DEBUG;IAC01_EXPORTS;WIN32;_WINDOWS;_UNICODE"

    2012年7月22日 17:37

回答

  •    <Tool
        Name="VCResourceCompilerTool"
        PreprocessorDefinitions="_AFXDLL;_DEBUG"
        Culture="1041"/>

    これは、リソースファイル(.rc)に適用されるオプションでしょうか?

    具体的には、「PreprocessorDefinitions(プリプロセッサの定義)」に上記のように「_DEBUG」がついている場合、リソースファイル上、有効なコードは①でしょうか?

    はい。

    上記の認識があっている場合、同じくプロジェクトファイルに下記のように記述されている中の、「PreprocessorDefinitions(プリプロセッサの定義)」から「_DEBUG」を削除した場合、有効なコードが②になってしまうということはないでしょうか?

    C/C++ のプリプロセッサの設定と、リソースの設定は別物なので rc ファイルの評価においては影響しません。
    試してみたいのであれば、「#error "test"」というように記載すれば、そこが通る(評価される)場合にエラーになります。#ifdef _DEBUG の中に書いて、いろいろと実験してみてはいかがでしょうか。

    なお、これらの設定は GUI からできるので参考までに。

    • 回答としてマーク KYS31 2012年7月23日 0:59
    2012年7月22日 22:11
    モデレータ

すべての返信

  •    <Tool
        Name="VCResourceCompilerTool"
        PreprocessorDefinitions="_AFXDLL;_DEBUG"
        Culture="1041"/>

    これは、リソースファイル(.rc)に適用されるオプションでしょうか?

    具体的には、「PreprocessorDefinitions(プリプロセッサの定義)」に上記のように「_DEBUG」がついている場合、リソースファイル上、有効なコードは①でしょうか?

    はい。

    上記の認識があっている場合、同じくプロジェクトファイルに下記のように記述されている中の、「PreprocessorDefinitions(プリプロセッサの定義)」から「_DEBUG」を削除した場合、有効なコードが②になってしまうということはないでしょうか?

    C/C++ のプリプロセッサの設定と、リソースの設定は別物なので rc ファイルの評価においては影響しません。
    試してみたいのであれば、「#error "test"」というように記載すれば、そこが通る(評価される)場合にエラーになります。#ifdef _DEBUG の中に書いて、いろいろと実験してみてはいかがでしょうか。

    なお、これらの設定は GUI からできるので参考までに。

    • 回答としてマーク KYS31 2012年7月23日 0:59
    2012年7月22日 22:11
    モデレータ
  • 回答ありがとございました。いろいろと参考になりました。
    2012年7月23日 1:00