如何解决尝试在 C++ 项目中使用 Metal 时出现“未知类型名称‘NSString’”错误vs 代码,mac m1
如标题所示,我从包括 NSObjCRuntime.h、NSObject.h 和 NSZone.h 在内的文件中得到了许多“未知类型名称‘NSString’”错误。然后我加了
#include <Foundation/NSString.h>
到 main.cpp 文件,但错误仍然存在。
c_cpp_properties.json
{
"configurations": [
{
"name": "Mac","includePath": [
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1","/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include","/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include","/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include","/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks","/opt/homebrew/include","${workspaceFolder}/**"
],"defines": [],"macFrameworkPath": [],"cStandard": "c17","cppStandard": "c++17","intelliSenseMode": "macos-clang-arm"
}
],"version": 4
}
tasks.json
{
"tasks": [
{
"type": "cppbuild","label": "C/C++: clang++ build active file","command": "/usr/bin/clang++","args": [
"-g","${file}","-I:/opt/homebrew/include","-I:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1","-I:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/clang/12.0.0/include","-I:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include","-I:/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include","-I:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/System/Library/Frameworks","-o","${fileDirname}/${fileBasenameNoExtension}",],"options": {
"cwd": "${workspaceFolder}"
},"problemMatcher": [
"$gcc"
],"group": {
"kind": "build","isDefault": true
},"detail": "Task generated by Debugger."
}
],"version": "2.0.0"
}
main.cpp 的“include”部分
#include <Foundation/NSString.h>
#include <Metal/Metal.h>
#include <MetalKit/MTKView.h>
#include <MetalKit/MetalKit.h>
using namespace std;
我错过了什么?
解决方法
Xcode 将默认将 .cpp
文件编译为 C++ 文件,而用于 Objective-C 的 #import
文件将不起作用。您应该将文件重命名为 .mm
或在右侧的 Inspector
窗口中更改其类型。
由于您使用的不是 Xcode,而是 vscode,因此重命名文件要容易得多,因为 clang 会自动将其编译为 Objective-C++
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。