9

私は 2 つの Visual C++ プロジェクトを持っており、どちらも Field Product Version が定義されている RC ファイルを持っています。グローバルな場所からこのバージョンを取得するために両方のプロジェクトを作成するにはどうすればよいですか? グローバル RC ファイルまたはどのようなソリューションがありますか?

4

2 に答える 2

11

私にとってうまくいくのは、2つの「ソリューションアイテム」を追加することです。1 つはいくつかのバージョン文字列を含む .h ファイルで、もう 1 つは .h へのインクルードがあり、定義を使用する#defines.rc ファイルです。BLOCK "StringFileInfo"

各プロジェクトの個々のリソース ファイルは、 を使用しTEXTINCLUDEてソリューションの .rc の内容を取り込みます。

理解しなければならないことはたくさんあります。私の言いたいことをお見せしましょう...

1) 2 つのソリューション項目が次のように追加されます。

ソリューション項目

2) version.h VersionInfo.rc2 で使用されるいくつかの #defines があります。

#define SOLUTIONFILEVERSION 1,00,0000,00000
#define SOLUTIONFILEVERSIONSTRING "1,00,0000,00000"
#define COPYRIGHT "Copyright 2012"
#define PRODUCTNAME "Your product name"
#define COMPANYNAME "Your company name"

3) VersionInfo.rc2 は定義を使用します

#include "version.h"
VS_VERSION_INFO VERSIONINFO
 FILEVERSION SOLUTIONFILEVERSION
 PRODUCTVERSION SOLUTIONFILEVERSION
 FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
 FILEFLAGS 0x1L
#else
 FILEFLAGS 0x0L
#endif
 FILEOS 0x4L
 FILETYPE 0x2L
 FILESUBTYPE 0x0L
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904b0"
        BEGIN
            VALUE "CompanyName", COMPANYNAME
            VALUE "FileVersion", SOLUTIONFILEVERSIONSTRING
            VALUE "LegalCopyright", COPYRIGHT
            VALUE "ProductName", PRODUCTNAME
            VALUE "ProductVersion", SOLUTIONFILEVERSIONSTRING
        END
    END
    BLOCK "VarFileInfo"
    BEGIN
        VALUE "Translation", 0x409, 1200
    END
END

このファイルの最後に新しい行を追加して、次のステップでリソース コンパイラが含まれるようにする必要があります。

設定したいもう 1 つのフィールドは「FileDescription」ですが、通常はプロジェクトごとに設定されます。これには、プロジェクト間で共有したいものをすべて含めることができることに注意してください。

4)各プロセスに VersionInfo.rc2 を含めます。これを行うには、リソース ビューで各プロジェクトの .rc を右クリックし、 [リソース インクルード]を選択します

コンパイル時のディレクティブに追加:#include "../VersionInfo.rc2"

コンパイル時ディレクティブ

これは、プロジェクトの .rc ファイルに次を追加することで手動で行うことができますが、Visual Studio で可能なすべてを管理できるようにする方がよいでしょう。

3 TEXTINCLUDE 
BEGIN
    "#include ""../VersionInfo.rc2""\r\n"
    "\0"
END

/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//
#include "../VersionInfo.rc2"
/////////////////////////////////////////////////////////////////////////////

ふぅ……一口でした。しかし今では、製品のバージョンを 1 か所から変更できるはずです。

于 2012-11-28T15:22:59.137 に答える
0

わかりました、私はそれを解決しました。

プロジェクトのリソースファイルの下部にも以下を追加する必要がありました

/////////////////////////////////////////////////////////////////////////////
//
// Generated from the TEXTINCLUDE 3 resource.
//

#include "VersionInfo.rc2"

/////////////////////////////////////////////////////////////////////////////

今ではすべてがうまく機能しています。ありがとう

于 2012-11-29T14:22:50.550 に答える