【发布时间】: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