Domanda

Non so gli script di RC.

Voglio includere la versione del prodotto, la versione del file, ecc metadati in una DLL che sto costruendo. Sto usando un file RC per farlo. La build è makefile guidato. Sto seguendo con un esempio RC scrpit ho trovato.

Il template file RC include afxres.h, ma non credo che ho bisogno che. Ma se ho appena rimuoverlo ho un sacco di errori di compilazione.

Che cosa fa uno script di base, non MFC RC assomiglia? Posso rimuovere tutte le cose in questo modo:

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

....
È stato utile?

Soluzione 2

La mia risposta:
NO, non ho bisogno di tutte quelle stronzate. Ecco uno script di RC che funziona per VERSIONINFO.

#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 con:

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

Altri suggerimenti

Ho avuto un problema simile quando si cerca di compilare senza MFC. La soluzione di Cheeso non avrebbe funzionato in modo adeguato per me.

Tutto compilato va bene, e non ho visto errori / avvisi durante la costruzione. L'icona che è stata definita nel mio file di risorse è stato mostrato correttamente in 'Windows Explorer'. Tuttavia, i dati della versione non era disponibile. (Che può essere visto quando clic destro su proprietà eseguibili e di selezione. In questo caso non vi era alcuna 'versione' scheda presente.)

Per farlo ho dovuto lavorare aggiungere il seguente includere nella parte superiore del file RC:

#include <windows.h>

Con questa modifica, la scheda Versione si presentava nelle proprietà del file eseguibile. Inoltre, la classe .NET System.Diagnostics.FileVersionInfo è ora in grado di ottenere le informazioni sulla versione, mentre questo non avrebbe funzionato prima.

defaultly "stdafx.h" dovrebbe includere "windows.h". Io non sono sicuro perché è necessario windows.h, ma sembra di fare la differenza nel mio caso.

Modifica:. Inserito alcune informazioni più specifiche, in risposta a Cheeso

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top