문제

리소스 파일이없는 DLL으로 빌드하는 여러 VC 6.0 프로젝트 (DSP)가 있습니다. 기존 프로젝트에 리소스를 추가하는 방법을 알고 있습니까?

이 프로젝트는 곧 메이저 릴리스가 예정되어 있으며 현재 부족한 DLL에 파일 버전을 추가하고 싶습니다. DLL은 릴리스 전에 재 컴파일 되므로이 프로젝트와 함께 상속받은 다른 모든 것 (파일 및 제품 버전이있는 등이있는 것과 마찬가지로 DSP를 만들려고 노력하고 있습니다. 고객의 기계.

한 가지 답변 : *.rc 및 resource.h 파일을 만들고 (다른 프로젝트에서 복사?) VC6 파일보기에서 YPUR 프로젝트의 소스 폴더에 추가하십시오. 리소스보기가 자동으로 생성됩니다. 도움을 주셔서 감사합니다. 제가 필요한 포인터를 주셨습니다.

도움이 되었습니까?

해결책

DLL의 리소스 파일에 versioninfo 블록을 추가하십시오.

.rc 파일을 열고 "삽입/리소스 .../버전"을 사용하면 많은 기본값이 포함 된 새 버전의 리소스를 얻을 수 있습니다. 프로젝트에 아직 리소스 파일이없는 경우 "File/New .../Resource Script"를 사용하여 추가 할 수 있습니다.

자신의 예를 들고 싶다면 예를 들어 VERSIONINFO 블록은 versioninfo의 MSDN 페이지:

#define VER_FILEVERSION             3,10,349,0
#define VER_FILEVERSION_STR         "3.10.349.0\0"

#define VER_PRODUCTVERSION          3,10,0,0
#define VER_PRODUCTVERSION_STR      "3.10\0"

#ifndef DEBUG
#define VER_DEBUG                   0
#else
#define VER_DEBUG                   VS_FF_DEBUG
#endif

VS_VERSION_INFO VERSIONINFO
FILEVERSION     VER_FILEVERSION
PRODUCTVERSION  VER_PRODUCTVERSION
FILEFLAGSMASK   VS_FFI_FILEFLAGSMASK
FILEFLAGS       (VER_PRIVATEBUILD|VER_PRERELEASE|VER_DEBUG)
FILEOS          VOS__WINDOWS32
FILETYPE        VFT_DLL
FILESUBTYPE     VFT2_UNKNOWN
BEGIN
    BLOCK "StringFileInfo"
    BEGIN
        BLOCK "040904E4"
        BEGIN
            VALUE "CompanyName",      VER_COMPANYNAME_STR
            VALUE "FileDescription",  VER_FILEDESCRIPTION_STR
            VALUE "FileVersion",      VER_FILEVERSION_STR
            VALUE "InternalName",     VER_INTERNALNAME_STR
            VALUE "LegalCopyright",   VER_LEGALCOPYRIGHT_STR
            VALUE "LegalTrademarks1", VER_LEGALTRADEMARKS1_STR
            VALUE "LegalTrademarks2", VER_LEGALTRADEMARKS2_STR
            VALUE "OriginalFilename", VER_ORIGINALFILENAME_STR
            VALUE "ProductName",      VER_PRODUCTNAME_STR
            VALUE "ProductVersion",   VER_PRODUCTVERSION_STR
        END
    END

    BLOCK "VarFileInfo"
    BEGIN
        /* The following line should only be modified for localized versions.     */
        /* It consists of any number of WORD,WORD pairs, with each pair           */
        /* describing a language,codepage combination supported by the file.      */
        /*                                                                        */
        /* For example, a file might have values "0x409,1252" indicating that it  */
        /* supports English language (0x409) in the Windows ANSI codepage (1252). */

        VALUE "Translation", 0x409, 1252

    END
END

다른 팁

언제든지 사용해 볼 수 있습니다 editbin /VERSION:#[.#] DLL 자체 내에서 버전을 변경합니다. 그렇지 않으면 프로젝트의 리소스 파일의 항목이어야합니다.

PATRICK, versionInfo 블록을 추가하면 실제로 DLL에 버전을 추가 했습니까? 그리고 실제로 바이너리 위에 마우스를 가져갈 때 버전 팝업을 수행합니다 ... 또는 마우스 오른쪽 버튼> 속성> 세부 사항도 버전을 표시하지 않습니다 ...

이것은 exe (들)에 효과적이지만, 라이브러리에 versioninfo 블록을 추가 할 때마다 아무것도 나타나지 않습니다.

EB

좋아, 오늘 내 무지를 공유 할 것이라고 생각했다 ... 분명히이 버전은 실제로 exe (s)와 dll (들)에만 효과가 있으므로 버전의 빠른보기를 위해 정적 라이브러리에서 그것을 사용하기를 희망한다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top