c++ - 包含 Cocoa header 时出错

标签 c++ macos cocoa objective-c++ foundation

我一直在创建一个在 MacOS 和 Windows 上使用的 UI 工具包,但我目前正在研究和测试 MacOS 方面的事情。最近,当我使用 CMake 编译我的代码时,我从包含 Cocoa header 中得到了不合理数量的错误。 Here是错误的 ghostbin。

最佳答案

我不确定这是否是您问题的完整答案,但希望它能为您指明前进的道路。感谢@uliwitness 提及 #if __OBJC__ .

所以 QT5 有一个 qmacextras 的 git 仓库,它结合了 c++ 和 objective-c,我正在做的事情以及我在导入时如何看到一堆错误 <Foundation/Foundation.h><Cocoa/Cocoa.h> .查看他们的一些代码,我看到了这个:

// ### remove when merged to QtCore
/*!
 * \macro Q_FORWARD_DECLARE_OBJC_CLASS(classname)
 *
 * Forward-declares an Objective-C class name in a manner such that it can be
 * compiled as either Objective-C or C++.
 *
 * This is primarily intended for use in header files that may be included by
 * both Objective-C and C++ source files.
 */
#ifdef __OBJC__
#define Q_FORWARD_DECLARE_OBJC_CLASS(classname) @class classname
#else
#define Q_FORWARD_DECLARE_OBJC_CLASS(classname) typedef struct objc_object classname
#endif

// Put in your header file
Q_FORWARD_DECLARE_OBJC_CLASS(NSData);
Q_FORWARD_DECLARE_OBJC_CLASS(NSImage);
// etc

https://code.qt.io/cgit/qt/qtmacextras.git/tree/examples/macextras/macfunctions?h=5.14

使用它可能会消除这些错误。

关于c++ - 包含 Cocoa header 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50868447/

相关文章:

C++ cUrl通过api向 Telegram Bot 发送图像buff

swift - NSPageController 错误转换

cocoa - 使用 ARC 编译时 ImageKit 错误和警告

c++ - 如何重置已保存变量以准备下次调用的模块的状态?

c++ - 结构方法链接

java - 无法在 Mac OS X Mavericks 中正确安装 Eclipse

macos - 无法通过 macOS 中的 ansible unarchive 模块提取 tar 文件?

objective-c - 以编程方式为 NSStatusBar.systemStatusBar 创建 NSMenu

c++ - 如果模板参数确实如此,则仅重载运算符

ios - 我可以删除 Xcode.app/Contents/Developer/下的平台吗?