سؤال

لذلك اتبعت الخطوات المذكورة هنا: http://zxing.googlecode.com/svn/trunk/iphone/README

وتأكدت من أن كل شيء على ما يرام ولكن حتى الآن لم يتم التعرف على QRCodeReader الخاص بي في ملف myVC.mm.

وهذا هو الوضع:تم وضع المشروع في مشروعي الخاص كما هو موضح في الرابط.لقد قمت باستيراد #import "ZXingWidgetController.h" في ملف الرأس ويتم التعرف عليه.لقد قمت باستيراد #import "QRCodeReader.h" في ملف التنفيذ (.mm) ثم قمت بتخصيصهما في مستهدف من بعض الزر مثل هذا:

    ZXingWidgetController *widController = [[ZXingWidgetController alloc] initWithDelegate:self showCancel:YES OneDMode:NO];
    widController.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"qr_code_initialising_bg.png"]];
    QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];
    NSSet *readers = [[NSSet alloc ] initWithObjects:qrcodeReader,nil];
    [qrcodeReader release];
    widController.readers = readers;
    [readers release];
    [self presentModalViewController:widController animated:YES];

الآن يخبرني أن هذه هي المشكلة:

        QRCodeReader* qrcodeReader = [[QRCodeReader alloc] init];
    NSSet *readers = [[NSSet alloc ] initWithObjects:qrcodeReader,nil];
    [qrcodeReader release];

انها تقول: Use of undeclared identifier 'QRCodeReader'

  • لماذا لا ترى استيراد QRCODEREADER في ملف SESE .MM؟
  • ما الذي نسيته وهو ليس في الوصف الذي استخدمته؟
  • والأهم من ذلك، كيف يمكنني إصلاح ذلك للتعرف على QRCodeReader؟
هل كانت مفيدة؟

المحلول

يستخدم رمز C++ المباشر (وليس Objective C++) مساحات أسماء C++.

عليك أن تقول إما zxing::qrcode::QRCodeReader او استعمل using تصريحات مثل

  using namespace zxing;
  using namespace zxing::qrcode;

تحديث:

الكود أعلاه يجلب فئة C++ ولكن هناك في الواقع فئة عناصر واجهة مستخدم تحمل نفس الاسم والتي نسيتها.إنها فئة Objective C التي تلتف حول فئة C++ وهي ما تريده.بدلاً من الكود أعلاه، فقط #import "QRCodeReader.h" ...الذي قلت أنك فعلت.أتوقع أن الملفين اللذين يحملان نفس الاسم يتصادمان.هل قمت بتعيين الخيار "العودي" عند تضمين ملفات cpp؟يقول الملف README "لست بحاجة إلى ذلك" ولكن من المحتمل أن يقول "لا يجب".قد يتسبب ذلك في تضمين ملف cpp وليس إصدار الأداة.

نصائح أخرى

لقد واجهت نفس المشكلة بالضبط في النهاية وكان الحل سهلاً نوعًا ما.

أضع الملف .mm مع "الموقع" -> "نسبة إلى المشروع".

نأمل أن تكون هذه المساعدة

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