错误:未命名类型在 iOS 项目 XCode 中使用了“BOOL”

问题描述 投票:0回答:1

我有一个 XCode 版本的项目:15.4,使用 Swift 进行 iOS 开发 -> uiKit。 我已将 c++ 类添加到我的项目中。

MyStaticClass.h:

#ifndef MYSTATICCLASS_H
#define MYSTATICCLASS_H

class MyStaticClass {
public:
static bool isEven(int number);
};

#endif

MyStaticClass.cpp

#include "MyStaticClass.h"

#include <iostream>

bool MyStaticClass::isEven(int number) {return (number % 2 == 0);}

然后我在 Objective C 中为这个类创建了包装器作为

// MyStaticClass_Wrapper.h

#import <Foundation/Foundation.h>

@interface MyStaticClassWrapper : NSObject

+ (BOOL)isEven:(int)number;

@end

// MyStaticClass_Wrapper.mm

#import <Foundation/Foundation.h>

#import "MyStaticClass_Wrapper.h"
#include "MyStaticClass.h"

@implementation MyStaticClassWrapper

+ (BOOL)isEven:(int)number {
  // Uncomment the line below to use the C++ implementation
  // return MyStaticClass::isEven(number);
  return true;
  }

@end

**注意:**目标文件是.mm而不是.m

我将桥接头文件添加为:

#import "MyStaticClass_Wrapper.h"

我在构建设置 -> Objective-C 桥接标头中添加了它的路径

添加了PrefixHeader.pch:

// PrefixHeader.pch

//#import <Foundation/Foundation.h>

#ifndef PrefixHeader_pch
#define PrefixHeader_pch

#import <Availability.h>

#ifdef __OBJC__
#import <UIKit/UIKit.h>

#import <CoreData/CoreData.h>

#endif

typedef enum{
bFileTypeDefault = 1,
bFileTypePhoto,
bFileTypeVideo,
bFileTypeAudio,
bFileTypeDocuments,
} baseFileType;

BOOL \_isFakeAccount;

#endif

然后将前缀头路径添加到设置中的“构建设置”->“前缀头”。

当我构建它时:

错误:未命名类型使用了“BOOL”

当我取消注释“#import ”时

错误:与未命名类型一起使用“BOOL”....“NSString”也遇到相同的错误

如何解决它,我被这个错误困扰了。

我尝试注释 BOOl,创建 .m 文件来单独声明全局变量。 没有起作用。 当我评论 .pch 文件内容时,它工作正常。

swift objective-c xcode uikit foundation
1个回答
0
投票

.pch 文件会添加到您为该目标编译的每个文件(c、c++ 或 objc)之前,因此如果您要导入 ObjC 标头,它应该位于

#ifdef __OBJC__
部分内。 否则,正在编译的非 objc 文件将无法识别导入。 Foundation/Foundation.h 是 ObjC 特定标头。

© www.soinside.com 2019 - 2024. All rights reserved.