Символ объективного C++, не найденный странностью

Можно использовать "Обрезку для Выбора" для достижения этого.

Удостоверяются, что изображение выбрано. Щелкните правой кнопкой где угодно по холсту и перейдите к меню "Image" В обрезке "Выбора меню изображения к Выбору".

enter image description here

Hare результат!

enter image description here

5
задан quano 1 September 2009 в 14:13
поделиться

1 ответ

При компиляции в файл C ( *. C, * .m ) объявление void hej () создает ссылку компоновщика на Функция C с именем _hej . При компиляции в файл C ++ ( *. Cc, * .mm, и т. Д.) Объявление создает ссылку компоновщика на «искаженное имя» C ++, которое включает в себя описание аргументов. (Это сделано для поддержки перегрузки функций, например, чтобы отличить void hej (int) от void hej (char *) ). hej.m всегда создает имя C. Когда main.mm ссылается на имя C ++, оно не будет найдено.

Чтобы решить эту проблему, убедитесь, что main.mm ищет имя C, а не имя C ++. Если вы управляете hej.h, обычно добавляют что-то вроде следующего, что будет работать, когда hej.h включен в файл C или C ++:

/* hej.h */
#ifdef __cplusplus
extern "C" {
#endif

void hej();

#ifdef __cplusplus
}
#endif

Если у вас нет hej.h, вы можете вместо этого сделать следующее в main.mm:

extern "C" {
#import "hej.h"
}

int main(int argc, char *argv[])
{
}
17
ответ дан 18 December 2019 в 09:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: