Ai-je besoin Afxres.h, si je ne suis pas en utilisant MFC? Comment puis-je le supprimer du script .rc?
-
21-09-2019 - |
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
....
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