MFC を使用していない場合、afxres.h は必要ですか?.RC ​​スクリプトからそれを削除するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1575559

質問

RCスクリプトは分かりません。

製品バージョン、ファイルバージョンなどを含めたい。構築中の DLL にメタデータを追加します。これを行うために .rc ファイルを使用しています。ビルドはメイクファイル主導で行われます。私が見つけた .rc スクリピットの例に従っています。

テンプレート .rc ファイルには次のものが含まれます afxres.h 、しかし、私はそれを必要としないと思います。しかし、それを削除しただけでは、大量のコンパイルエラーが発生します。

基本的な非 MFC RC スクリプトはどのようなものですか?次のようなものをすべて削除できますか?

/////////////////////////////////////////////////////////////////////////////
// English (U.S.) resources

#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
#ifdef _WIN32
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
#pragma code_page(1252)
#endif //_WIN32

....
役に立ちましたか?

解決 2

私の答え:
NO、私はすべてのがらくたその必要はありません。ここでVERSIONINFOのために働くRCスクリプトがあります。

#define VER_FILEVERSION          1,2,3,4
#define VER_FILEVERSION_STR      "1.2.3.4"
#define VER_PRODUCTVERSION       1,2,0,0
#define VER_PRODUCTVERSION_STR   "1.2.0.0"

// -------------------------------------------------------

VS_VERSION_INFO VERSIONINFO
 FILEVERSION            VER_FILEVERSION
 PRODUCTVERSION         VER_PRODUCTVERSION
 FILEFLAGSMASK 0x17L
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x2L
 FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
    BLOCK "040904b0"
    BEGIN
    VALUE "CompanyName",      "Company X"
    VALUE "FileDescription",  "Description Goes Here"
    VALUE "InternalName",     "NotSure"
    VALUE "LegalCopyright",   "Copyright (C) 2009 Your Name Here"
    VALUE "OriginalFilename", "DllName.dll"
    VALUE "ProductName",      "Product Title"
    VALUE "FileVersion",      VER_FILEVERSION_STR
    VALUE "ProductVersion",   VER_PRODUCTVERSION_STR
    END
END
BLOCK "VarFileInfo"
BEGIN
    VALUE "Translation", 0x409, 1200
END
END

とConmpileそれをます:

$(WindowsSDK)\bin\RC.exe /FoProjectName.res ProjectName.rc

他のヒント

MFC を使用せずにコンパイルしようとしたときにも同様の問題が発生しました。Cheeso のソリューションは私には適切に機能しません。

すべてが正常にコンパイルされ、ビルド中にエラーや警告は見られませんでした。リソース ファイルで定義されたアイコンは、「Windows エクスプローラー」に正しく表示されました。ただし、バージョンデータは入手できませんでした。(これは、実行可能ファイルと選択プロパティを右クリックすると表示されます。この場合、「バージョン」タブは存在しませんでした)。

これを機能させるには、.rc ファイルの先頭に次のインクルードを追加する必要がありました。

#include <windows.h>

この変更により、実行可能ファイルのプロパティにバージョン タブが表示されるようになります。また、.NET System.Diagnostics.FileVersionInfo クラスは、以前は機能しなかったバージョン情報を取得できるようになりました。

デフォルトでは、「stdafx.h」には「windows.h」が含まれます。なぜ windows.h が必要なのかはわかりませんが、私の場合は違いがあるようです。

編集:Cheeso への応答として、より具体的な情報を追加しました。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top