سؤال

نحن نستخدم .NET Assembly DLL ضمن C++ الأصلي من خلال COM (CCW).عندما أقوم بإنشاء إصدار جديد من ملف DLL الخاص بي، يجب علي إرسال ملفين (.dll و.tlb المطابق) إلى الطاقم الذي يستخدمه في التعليمات البرمجية الخاصة بهم.

هل من الممكن تضمين ملف .tlb كمورد في ملف .NET DLL؟

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

المحلول

ليس من السهل تمامًا القيام بذلك باستخدام Visual Studio .NET، ولكن يمكن القيام بذلك.على المستوى الأساسي، ما عليك القيام به هو:

  1. قم بإنشاء ملف TLB الخاص بك، على سبيل المثال، "YourLibrary.tlb".

  2. قم بإنشاء ملف نصي لمورد Win32 يسمى، على سبيل المثال، "YourLibrary.rc" باستخدام محرر نص (مثل Notepad، أو File/New/File.../Text File في Visual Studio).

  3. في ملف البرنامج النصي، اكتب النص التالي حرفيًا (لكن استبدل اسم ملف TLB الفعلي بالطبع):

    1 نوع "YourLibrary.tlb"

  4. احفظ ملف البرنامج النصي في نفس المجلد مثل ملف TLB.

  5. من موجه أوامر Visual Studio، قم بالتغيير إلى المجلد الذي يحتوي على ملف البرنامج النصي وقم بتجميعه باستخدام الأمر التالي:

    RC YourLibrary.rc

    سيؤدي هذا إلى إنشاء ملف مورد Win32 في نفس المجلد المسمى "YourLibrary.res".

  6. في Visual Studio، انقر بزر الماوس الأيمن فوق عقدة المشروع (على سبيل المثال، "YourLibrary") في Solution Explorer وحدد خصائص.

  7. في علامة التبويب "التطبيق"، ضمن "الموارد"، حدد خيار "ملف المورد" واستعرض للوصول إلى ملف "YourLibrary.res" من الخطوة 5.

  8. حفظ وإعادة بناء المشروع.

سيتم الآن تضمين TLB كمورد في مكتبة الارتباط الحيوي (DLL) بحيث تتمكن تطبيقات COM الأخرى من قراءته.

إذا قمت بإعادة إنشاء ملف TLB لاحقًا، فستحتاج إلى تكرار الخطوة 5 لإعادة ترجمة ملف المورد، والخطوة 8 لتضمين الإصدار الجديد في ملف DLL.

ومع ذلك، قد تكون قادرًا على أتمتة بعض من هذا باستخدام Build Events أو عن طريق وضع أهداف MSBuild مخصصة في ملف المشروع الخاص بك، ولكن هذه مناقشة أخرى تمامًا.

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