10

RCスクリプトがわかりません。

作成しているDLLに、製品バージョン、ファイルバージョンなどのメタデータを含めたい。私はそれを行うために.rcファイルを使用しています。ビルドはmakefile駆動です。私が見つけた.rcscrpitの例をフォローしています。

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

基本的な非MFCRCスクリプトはどのように見えますか?このようなものをすべて削除できますか?

/////////////////////////////////////////////////////////////////////////////
// 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

....
4

3 に答える 3

10

MFCなしで​​コンパイルしようとすると、同様の問題が発生しました。Cheesoのソリューションは私には適切に機能しませんでした。

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

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

#include <windows.h>

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

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

編集:Cheesoに応じて、いくつかのより具体的な情報を追加しました。

于 2010-04-26T08:36:46.407 に答える
2

私の答え:
いいえ、そんなくだらないものは必要ありません。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

次のようにコンパイルします。

$(WindowsSDK)\bin\RC.exe /FoProjectName.res ProjectName.rc
于 2009-10-15T23:09:14.310 に答える