سؤال

أحاول إضافة DLL VC6 COM إلى حل VS2010RC C #. تم تجميع DLL مع أدوات VC6 لإنشاء إصدار X86 وتم تجميعه باستخدام أدوات VC7 عبر منصة لإنشاء DLL VC7.

تعمل إصدار X86 من التجميع بشكل جيد طالما تم تعيين منصة مشروع C # المستهلكة إلى X86. لا يهم ما إذا كان إصدار X64 أو إصدار X86 من DLL مسجلا بالفعل. انه يعمل مع كليهما. إذا تم ضبط النظام الأساسي على "أي وحدة المعالجة المركزية" أتلقى BadImageFormatException على حمولة Interop.<name>.dll.

بالنسبة لإصدار X64، لا يمكنني حتى الحصول على المشروع للبناء. أتلقى خطأ Tlbimp:

Tlbimp: خطأ TI0000: يجب تحديد نوع جهاز واحد صالح متوافق مع مكتبة نوع الإدخال.

هل رأى أي شخص هذه المشكلة؟

تعديل:

لقد قمت بحفر أكثر بكثير في هذه المشكلة وأعتقد أن هذا قد يكون خطأ مرئي استوديو. لدي حل نظيف. أحضر تجميع كوم الخاص بي مع اللغة اللغوية "أي وحدة المعالجة المركزية" المحددة. العمارة العملية ل DLL Interop الناتجة هي X86 بدلا من MSIL.

قد تضطر إلى جعل Interop باليد في الوقت الحالي للحصول على هذا للعمل.

إذا كان لدى أي شخص اقتراح آخر، فأخبرني بذلك.

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

المحلول

يمكن حل هذه المشكلة عن طريق فتح ملف CSProj وإضافة العقدة التالية إلى أي من '(التكوين) | أي عقد وحدة المعالجة المركزية التي تفتقدها:

<PlatformTarget>AnyCPU</PlatformTarget>

إذا كانت هذه العقدة غير موجودة، فسوف يقوم Tlbimp بالتقصير إلى x86 وتسبب مشكلات.

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