10

Próbuję zrobić coś, co jest bardzo łatwe do zrobienia w zwykłym MSVC, ale nie jest obsługiwane z łatwością w VC++ Express.Zasób wersji w bibliotece DLL nie jest widoczny po kliknięciu prawym przyciskiem myszy

Brak edytora zasobów w VC++ Express. Dodałem plik o nazwie version.rc do mojego projektu DLL. Plik ma poniższą zawartość, która jest kompilowana przez kompilator zasobów i dodawana do ostatecznej biblioteki DLL. Ten zasób jest widoczny w bibliotece DLL przy użyciu programu Reshacker, ale nie po kliknięciu prawym przyciskiem myszy biblioteki DLL w Eksploratorze Windows.

Czego brakuje w moim pliku RC, aby pojawił się po kliknięciu prawym przyciskiem myszy?

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 

Odpowiedz

9

Prawidłowe rozwiązaniem jest dodanie do górnej części pliku .rc:

#include <windows.h> 
+4

'# wystarczy: ' wystarczy –

3

Spróbuj zmienić zasobów:

FILEFLAGSMASK 0x3fL 

i

BLOCK "040004e4" 

i

VALUE "Translation", 0x400, 1252 
+0

następnie dowiedzieć się, które z bibliotekami już odwołuje się do zasobu wersji. Już łączysz się z zasobem wersji (teraz musisz dowiedzieć się, który z nich i który plik/lib to robi). – Stefan

+0

Spróbuj dezaktywować łączenie przyrostowe: Właściwości projektu-> Łącznik-> Często-> Włącz łączenie przyrostowe Może pomóc także przebudowanie. – Stefan

+0

Usunąłem moje komentarze, teraz, gdy pytanie zostało ponownie sformułowane. –

15

udało mi się zobaczyć (za pomocą reshacker) jedna różnica między moim zasobem i zasoby, które pojawiają się na platformie ht-click, i to była nazwa zasobu. Zmieniłem VS_VERSION_INFO na 1; a teraz zasób jest widoczny po kliknięciu prawym przyciskiem myszy.

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

Świetny połów! Po prostu wpadłem na to samo. Przypuszczalnie symbol VS_VERSION_INFO jest zdefiniowany gdzie indziej, który nie jest dołączany do skryptu zasobów (lub mojego). –

+1

Zdefiniowałem go na równe 1 i teraz działa. Dziękuję Ci! Szkoda, że ​​nie znalazłem tej odpowiedzi wcześniej. –

+0

Odpowiedź Davida na jego własne pytanie jest właściwa! Jest to świetny haczyk, szczególnie gdy tworzy się pliki zasobów bez użycia Visual Studio. Być może właśnie dlatego on, Jim Crafton i ja wpadliśmy na ten sam problem. Dzięki David! – user1593842

Powiązane problemy