10

J'essaie de faire quelque chose qui est très facile à faire dans le MSVC normal, mais pas facilement supporté dans VC++ Express.Ressource de version dans DLL non visible avec le bouton droit

Il n'y a pas d'éditeur de ressources dans VC++ Express. J'ai donc ajouté un fichier nommé version.rc dans mon projet DLL. Le fichier a le contenu ci-dessous, qui est compilé par le compilateur de ressources et ajouté à la DLL finale. Cette ressource est visible dans la DLL à l'aide de reshacker, mais pas lorsque vous cliquez avec le bouton droit sur la DLL dans l'Explorateur Windows.

Que manque-t-il de mon fichier RC pour le faire apparaître lorsque vous cliquez avec le bouton droit de la souris?

VS_VERSION_INFO VERSIONINFO 
FILEVERSION 1,0,0,1 
PRODUCTVERSION 1,0,0,1 
FILEFLAGSMASK 0x17L 
#ifdef _DEBUG 
FILEFLAGS 0x1L 
#else 
FILEFLAGS 0x0L 
#endif 
FILEOS 0x4L 
FILETYPE 0x1L 
FILESUBTYPE 0x0L 
BEGIN 
    BLOCK "StringFileInfo" 
    BEGIN 
     BLOCK "040904b0" 
     BEGIN 
      VALUE "FileDescription", "something Application" 
      VALUE "FileVersion", "1, 0, 0, 1" 
      VALUE "InternalName", "something" 
      VALUE "LegalCopyright", "Copyright (C) 2008 Somebody" 
      VALUE "OriginalFilename", "something.exe" 
      VALUE "ProductName", "something Application" 
      VALUE "ProductVersion", "1, 0, 0, 1" 
     END 
    END 
    BLOCK "VarFileInfo" 
    BEGIN 
     VALUE "Translation", 0x409, 1200 
    END 
END 

Répondre

9

La bonne solution est d'ajouter en haut de votre fichier .rc:

#include <windows.h> 
+4

'#include ' est assez –

3

Essayez de changer vos ressources pour:

FILEFLAGSMASK 0x3fL 

et

BLOCK "040004e4" 

et

VALUE "Translation", 0x400, 1252 
+0

Ensuite, savoir lequel de vos libs lien déjà à une ressource de version. Vous êtes déjà lié à une ressource de version (maintenant vous devez savoir lequel et quel fichier/lib fait cela). – Stefan

+0

Essayez de désactiver la liaison incrémentielle: Propriétés du projet-> Lieur-> Commun-> Activer la liaison incrémentielle Ou une reconstruction peut également aider. – Stefan

+0

J'ai supprimé mes commentaires, maintenant que la question a été reformulée. –

15

J'ai pu voir (en utilisant ResHacker) une différence entre ma ressource et les ressources qui apparaissent sur la plate-forme ht-click, et c'était le nom de la ressource. J'ai donc changé VS_VERSION_INFO en 1; et maintenant la ressource est visible sur le clic droit.

1 VERSIONINFO 
FILEVERSION 1,0,0,1 
PRODUCTVERSION 1,0,0,1 
FILEFLAGSMASK 0x17L 
#ifdef _DEBUG 
FILEFLAGS 0x1L 
#else 
FILEFLAGS 0x0L 
#endif 
FILEOS 0x4L 
FILETYPE 0x1L 
FILESUBTYPE 0x0L 
BEGIN 
    BLOCK "StringFileInfo" 
    BEGIN 
     BLOCK "040904b0" 
     BEGIN 
      VALUE "FileDescription", "something Application" 
      VALUE "FileVersion", "1, 0, 0, 1" 
      VALUE "InternalName", "something" 
      VALUE "LegalCopyright", "Copyright (C) 2008 Somebody" 
      VALUE "OriginalFilename", "something.exe" 
      VALUE "ProductName", "something Application" 
      VALUE "ProductVersion", "1, 0, 0, 1" 
     END 
    END 
    BLOCK "VarFileInfo" 
    BEGIN 
     VALUE "Translation", 0x409, 1200 
    END 
END 
+2

Bonne prise! Je suis juste tombé sur la même chose. Vraisemblablement, le symbole VS_VERSION_INFO est défini ailleurs quelque part qui n'est pas inclus dans votre script de ressource (ou le mien). –

+1

Je l'ai défini pour égaler 1 et cela fonctionne maintenant. Je vous remercie! J'aurais aimé avoir trouvé cette réponse plus tôt. –

+0

La réponse de David à sa propre question est juste! Et c'est un excellent moyen, surtout quand on crée des fichiers de ressources sans utiliser Visual Studio. C'est peut-être pourquoi Jim Crafton et moi-même avons rencontré exactement le même problème. Merci David! – user1593842

Questions connexes