هل أحتاج إلى afxres.h ، إذا لم أستخدم MFC؟ كيف يمكنني إزالته من البرنامج النصي .rc؟

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

سؤال

لا أعرف البرامج النصية RC.

أرغب في تضمين إصدار المنتج ، وإصدار الملف ، وما إلى ذلك. أنا أستخدم ملف .rc للقيام بذلك. البناء هو مدفوع. أنا أتابع جنبا إلى جنب مع مثال .RC scrpit وجدت.

يتضمن ملف القالب .RC afxres.h ، لكنني لا أعتقد أنني بحاجة إلى ذلك. ولكن إذا قمت بإزالته فقط ، أحصل على مجموعة من أخطاء التجميع.

كيف يبدو البرنامج النصي الأساسي غير MFC RC؟ هل يمكنني إزالة كل الأشياء مثل هذه:

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

....
هل كانت مفيدة؟

المحلول 2

إجابتي:
لا ، لست بحاجة إلى كل هذا الهراء. إليك برنامج نصي RC يعمل لـ 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 مع:

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

نصائح أخرى

واجهت مشكلة مماثلة عند محاولة التجميع بدون MFC. حل تشيزو لن يعمل بشكل كاف بالنسبة لي.

كل شيء تم تجميعه بشكل جيد ، ولم أر أي أخطاء/تحذيرات أثناء المبنى. تم عرض الرمز الذي تم تعريفه في ملف المورد الخاص بي بشكل صحيح في "Windows Explorer". ومع ذلك ، لم تكن بيانات الإصدار متوفرة. (والتي يمكن رؤيتها عند النقر بزر الماوس الأيمن على خصائص التنفيذ والاختيار. في هذه الحالة ، لم يكن هناك علامة تبويب "إصدار".

للحصول على العمل ، اضطررت إلى إضافة ما يلي في الجزء العلوي من ملف .rc:

#include <windows.h>

مع هذا التغيير ، ستظهر علامة تبويب الإصدار في خصائص القابلة للتنفيذ. وأيضًا ، فإن فئة .NET System.Diagnostics.FileversionInfo قادر الآن على الحصول على معلومات الإصدار ، في حين أن هذا لن يعمل من قبل.

سيتضمن "stdafx.h" بشكل افتراضي "windows.h". لست متأكدًا من سبب حاجة إلى Windows.h ، لكن يبدو أنه يحدث الفرق في حالتي.

تحرير: أضيفت بعض المعلومات المحددة ، استجابة للجبن.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top