header 包括在 Swift 项目中使用 C++ 文件时的错误

header including error when using C++ file in Swift project

我在swift项目中使用C++文件,但是在swift项目中,我们不能直接使用C++文件,应该使用objective-c文件。 所以我创建了 IFCEngineLib.hIFCEngineLib.m 文件以使用 IFCFileParser.hIFCFileParser.cpp。 在 IFCEngineLib.mm 中,我包含 IFCFileParser.h 文件如下:

#import "IFCEngineLib.h"

#include "IFCFileParser.h"

CIFCFileParser *g_pModel = NULL;

@implementation IFCEngineLib
....
@end

但是当我构建项目时,出现以下错误:

Cannot find protocol declaration for 'PKPushRegistryDelegate'

我在 AppDelegate.swift 中使用了 PKPushRegistryDelegate,并在其中导入了 PushKit,如下所示:

//
//  AppDelegate.swift
//
import UIKit
import CoreData    
import UserNotifications    
import PushKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, PKPushRegistryDelegate {
...
}

我该如何解决这个错误?谁能帮帮我?

我找到了解决这个问题的方法。 我必须在 IFCEngineLib.m 中的应用程序中导入 objective-C 库 的所有头文件。 我在应用程序中使用了 PushKit,所以我必须在 IFCEngineLib.m 中导入 <PushKit/PushKit.h>。 所以 IFCEngineLib.m 文件如下所示:

#import "IFCEngineLib.h"
#import <PushKit/PushKit.h>

#include "IFCFileParser.h"

CIFCFileParser *g_pModel = NULL;

@implementation IFCEngineLib
....
@end

如果您使用音频播放器,则必须导入 #import <AVFoundation/AVAudioPlayer.h>。就这些了。