Компилятор Clang / компоновщик не может найти символ NSMenuItem для архитектуры x86_64 - PullRequest
0 голосов
/ 10 января 2019

В настоящее время я портирую приложение C ++ / SDL2 на Mac OS X и хочу добавить элементы и отредактировать собственную строку меню, которая сопровождает приложения Mac OS X (вверху экрана).

Однако мой компилятор жалуется на то, что нигде не распознается класс NSMenuItem в API Какао ...

Мне удалось преобразовать мои main.cpp в main.mm и #import заголовки Cocoa / Cocoa.h, однако, когда я объявляю переменную NSMenuItem (например, переменную LoadROMItem в моем фрагменте ниже), я получаю ошибку компоновщика :

Неопределенные символы для архитектуры x86_64: "_OBJC_CLASS _ $ _ NSMenuItem", на который ссылаются: objc-class-ref в main.o ld: символы не найдены для архитектуры x86_64 clang: error: сбой команды компоновщика с кодом выхода 1 (используйте -v для просмотра вызова)

Вот фрагмент кода:

    bool RUNNING = true;
    SDL_Init(SDL_INIT_EVERYTHING);
    SDL_Window* _SDLwindow = SDL_CreateWindow("GBemu", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 500, 500, SDL_WINDOW_RESIZABLE);
    SDL_Surface* _screen = SDL_GetWindowSurface(_SDLwindow);
    SDL_SysWMinfo *NativeWindowInfo = new SDL_SysWMinfo;
    SDL_GetWindowWMInfo(_SDLwindow, NativeWindowInfo);

    SDL_Event _event;

#ifdef __APPLE__
    NSMenuItem* LoadRomItem = [[NSMenuItem alloc]initWithTitle:@"Load ROM" action:NULL keyEquivalent:@"s"];
    [NativeWindowInfo->info.cocoa.window.menu addItem:LoadRomItem];
#endif

Может ли это быть из-за того, что я забыл импортировать? Или это может быть настройка компилятора и / или компоновщика, которую я забыл установить?

Я использую XCode в качестве своей IDE.

1 Ответ

0 голосов
/ 10 января 2019

Это ошибка компоновщика, а не ошибка компилятора. Убедитесь, что вы ссылаетесь на платформу Какао - в XCode вы можете просто добавить его в свой проект.

...