سؤال

حصلت على DLL ولدت على VC6 واستخدام wstring, وأنا أحاول استخدامه في مشروع VC9. في هذا DLL، يوجد معالجة فئة أعلى مستوى wstring, ، مسمى UtfString.

حصلت على كل شيء مستورد بشكل صحيح في مشروعي، ولكن عندما اتصلت:

std::wstring test;
UtfString uTest(test);

لن يرتبط، حتى لو كانت النموذج الأولي الوظيفة في Lib ...

المصدر الآخر هو أنه عند إنشاء utfstring جديد، وتصحيح التطبيق الخاص بي، فإن المؤشر الجديد هو <Bad Ptr>.

أظن وجود تعارض بين VC6 wstring و VC9. wstring ولكني لست متأكدا. أريد تجنب تعديل DLL الأصلي.

سيكون من الرائع إذا كان شخص ما يمكن أن يجعل الأمور أكثر وضوحا بالنسبة لي، وشرح لي ما هو السبب الحقيقي للمشكلة.

شكرا مقدما على إجابتك، بوريس

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

المحلول

لا تحاول حتى

تخطيطات السلسلة مختلفة

لا يمكنك القيام بذلك.

تختلف فئة السلسلة تماما بين VC6 و VC9.

حتى لو كنت قادرا على ربطك، فمن المرجح أن تعطل.

في سلاسل VC9 لديها اتحاد هو 16 البايت المخزن المؤقت للأسلوت الصغيرة ومؤشر حجم السلسلة ()> 15. في VC9 WSTrings لديها اتحاد هو 8 WHAR العازلة للحصول على سلاسل صغيرة ومؤشر لحجم سلسلة ()> 7.

في VC6، يتم تخصيص جميع المساحات العازلة سلسلة على كومة.

يجب إعادة ترجمة DLL إذا كنت تمر السلاسل عبر الحدود. هناك مشاكل أخرى أيضا فيما يتعلق بالمقتطفات التقنية للغاية لوصف هنا.

آسف فلدي إعادة بناء

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