Ai-je besoin Afxres.h, si je ne suis pas en utilisant MFC? Comment puis-je le supprimer du script .rc?

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

Question

Je ne sais pas les scripts RC.

Je veux inclure la version du produit, la version du fichier, etc. métadonnées dans une DLL Je construis. J'utilise un fichier .rc pour le faire. La construction est entraîné makefile. Je suis avec un exemple .rc scrpit j'ai trouvé.

Le modèle de fichier .rc comprend afxres.h, mais je ne pense pas avoir besoin de cela. Mais si je retire tout ce que je reçois un tas d'erreurs de compilation.

À quoi ressemble un base, un script non-MFC RC comme? Puis-je supprimer tous les trucs comme ceci:

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

....
Était-ce utile?

La solution 2

Ma réponse:
NON, je ne ai pas besoin toutes ces conneries. Voici un script RC qui fonctionne pour 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 avec:

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

Autres conseils

J'ai eu un problème similaire lorsque vous essayez de compiler sans MFC. La solution de Cheeso ne fonctionnerait pas correctement pour moi.

Tout bien compilé, et je ne voyais pas les erreurs / avertissements lors de la construction. L'icône qui a été défini dans mon fichier de ressources a été montré correctement dans «l'explorateur windows. Toutefois, les données de version n'a pas été disponible. (Qui peut être vu en cliquant droit sur les propriétés exécutables et de sélection. Dans ce cas, il n'y avait pas d'onglet « version » actuelle.)

Pour le faire fonctionner je devais ajouter ce qui suit inclure au début du fichier .rc:

#include <windows.h>

Avec ce changement, l'onglet version apparaîtrait dans les propriétés de l'exécutable. En outre, la classe .NET System.Diagnostics.FileVersionInfo est maintenant en mesure d'obtenir les informations de version, alors que cela ne fonctionne pas avant.

défaillant peut "stdafx.h" comprendrait "windows.h". Je ne sais pas pourquoi, mais il semble est nécessaire windows.h de faire la différence dans mon cas.

Modifier. Ajout des informations plus précises, en réponse à Cheeso

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top