سؤال

أحاول إنشاء تطبيق في XCode 3.2.4 وأحصل على خطأ الرابط التالي:

Undefined symbols:
  "___block_global_1", referenced from:
      ___block_holder_tmp_1.120 in foobarbaz.o
ld: symbol(s) not found
collect2: ld returned 1 exit status

أنا في حيرة لشرح ما قمت به في ملف المصدر الذي قد يسبب الخطأ. لدي كتلة أعرّفها كمتغير عالمي ، مثل ذلك:

typedef void(^error_block_t)(NSError* error);

error_block_t error_handler_s = ^void(NSError* error)
{
    //...
}

يتم تعريف هذه الكتلة في مساحة اسم فارغة في المصدر (أقوم بتجميع Objective-C ++.) كل شيء يجمع دون خطأ.

تحديث: تحريك الكتلة لتكون متغيرًا محليًا للروتين الذي يشير إلى أنه حلول قابل للتطبيق (وإن لم يكن مفضلاً).

ما يعطي؟

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

المحلول 2

في هذه المرحلة ، أعتقد أن هذه القضية هي خطأ.

نصائح أخرى

إذا error_handler_s ليس المقصود أن يتم تصديره ، يمكنك القيام به static كحل آخر.

namespace {
  ...
  static error_block_t error_handler_s = ^void(NSError* error) { ... };
  ...
}

خلاف ذلك ، أعتقد أن هذا خطأ في مجلس التعاون الخليجي.

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