2

リソース ファイルを持たない dll をビルドする VC 6.0 プロジェクト (dsps) がいくつかあります。既存のプロジェクトにリソースを追加する方法はありますか?

このプロジェクトはまもなくメジャー リリースが予定されており、現在不足している dll にファイル バージョンを追加したいと考えています。dll はリリース前に再コンパイルされるので、このプロジェクトで継承した他のすべての dsps と同じようにこれらの dsps を作成しようとしています (ファイルと製品バージョンなどがあるため、実行中のものを簡単に正確に知ることができます)。お客様のマシン。

1 つの答え: *.rc および resource.h ファイルを作成し (別のプロジェクトからコピーしますか?)、VC6 ファイル ビューで ypur プロジェクトのソース フォルダーに追加します。リソース ビューは自動的に作成されます。助けてくれてありがとう、必要な指針を教えてくれました。

4

3 に答える 3

6

DLL のリソース ファイルに VERSIONINFO ブロックを追加するだけです。

.rc ファイルを開き、"Insert/Resource.../Version" を使用すると、多数のデフォルトを含む新しい VERSIONINFO リソースが取得されます。プロジェクトにリソース ファイルがまだない場合は、"File/New.../Resource Script" を使用して追加できます。

独自のブロックを作成する場合は、 MSDN ページの VERSIONINFOVERSIONINFOにブロックの例が示されています。

#define VER_FILEVERSION             3,10,349,0
#define VER_FILEVERSION_STR         "3.10.349.0\0"

#define VER_PRODUCTVERSION          3,10,0,0
#define VER_PRODUCTVERSION_STR      "3.10\0"

#ifndef DEBUG
#define VER_DEBUG                   0
#else
#define VER_DEBUG                   VS_FF_DEBUG
#endif

VS_VERSION_INFO VERSIONINFO
FILEVERSION     VER_FILEVERSION
PRODUCTVERSION  VER_PRODUCTVERSION
FILEFLAGSMASK   VS_FFI_FILEFLAGSMASK
FILEFLAGS       (VER_PRIVATEBUILD|VER_PRERELEASE|VER_DEBUG)
FILEOS          VOS__WINDOWS32
FILETYPE        VFT_DLL
FILESUBTYPE     VFT2_UNKNOWN
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904E4"
        BEGIN
            VALUE "CompanyName",      VER_COMPANYNAME_STR
            VALUE "FileDescription",  VER_FILEDESCRIPTION_STR
            VALUE "FileVersion",      VER_FILEVERSION_STR
            VALUE "InternalName",     VER_INTERNALNAME_STR
            VALUE "LegalCopyright",   VER_LEGALCOPYRIGHT_STR
            VALUE "LegalTrademarks1", VER_LEGALTRADEMARKS1_STR
            VALUE "LegalTrademarks2", VER_LEGALTRADEMARKS2_STR
            VALUE "OriginalFilename", VER_ORIGINALFILENAME_STR
            VALUE "ProductName",      VER_PRODUCTNAME_STR
            VALUE "ProductVersion",   VER_PRODUCTVERSION_STR
        END
    END

    BLOCK "VarFileInfo"
    BEGIN
        /* The following line should only be modified for localized versions.     */
        /* It consists of any number of WORD,WORD pairs, with each pair           */
        /* describing a language,codepage combination supported by the file.      */
        /*                                                                        */
        /* For example, a file might have values "0x409,1252" indicating that it  */
        /* supports English language (0x409) in the Windows ANSI codepage (1252). */

        VALUE "Translation", 0x409, 1252

    END
END
于 2009-02-03T17:29:56.700 に答える
0

Patrick さん、versioninfo ブロックを追加すると、実際にバージョン管理が DLL に追加されましたか? そして実際には、マウスをバイナリの上に置くとバージョン管理ポップアップが表示されます...または右クリック>プロパティ>詳細にもバージョン管理が表示されません...

これはexeに対して機能しますが、バージョン情報ブロックをライブラリに追加するたびに何も表示されません。

EB

わかりました、今日は私の無知を共有すると思いました...明らかに、このバージョン管理はexe(s)とdll(s)に対してのみ実際に機能するため、バージョン管理をすばやく表示するために静的ライブラリで使用するという私の希望は終わります

于 2010-01-05T17:47:50.190 に答える
0

editbin /VERSION:#[.#]dll 自体のバージョンを変更するために、いつでも使用を試みることができます。それ以外の場合は、プロジェクトのリソース ファイル内のエントリにする必要があります。

于 2009-02-03T15:48:23.537 に答える