【问题标题】:Clang compiler/Linker cannot find symbol NSMenuItem for x86_64 ArchitechtureClang 编译器/链接器找不到 x86_64 架构的符号 NSMenuItem
【发布时间】:2019-06-04 17:48:32
【问题描述】:

我目前正在将 C++/SDL2 应用程序移植到 Mac OS X,我想在 Mac OS X 应用程序随附的本机菜单栏(在屏幕顶部)添加项目并对其进行编辑。

但是,我的编译器抱怨无法识别 Cocoa API 中的任何位置的 NSMenuItem 类...

我已经设法将 main.cpp 转换为 main.mm 和 #import Cocoa/Cocoa.h 头文件,但是当我声明一个 NSMenuItem 变量(例如下面我的 sn-p 中的 LoadROMItem 变量)时,我得到一个链接器错误:

架构 x86_64 的未定义符号: “_OBJC_CLASS_$_NSMenuItem”,引用自: main.o 中的 objc-class-ref ld:未找到架构 x86_64 的符号 clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)

这里是sn-p的代码:

    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。

【问题讨论】:

    标签: c++ objective-c cocoa sdl-2


    【解决方案1】:

    这是一个链接器错误,而不是编译器错误。确保链接到 Cocoa 框架 - 在 Xcode 中,您可以将其添加到您的项目中。

    【讨论】:

      猜你喜欢
      • 2015-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-21
      • 2015-05-31
      • 2015-12-16
      • 2012-12-16
      相关资源
      最近更新 更多