programing

Xcode MyProjectName-Bridging-Header.h가 존재하지 않습니다.

linuxpc 2023. 5. 1. 20:00
반응형

Xcode MyProjectName-Bridging-Header.h가 존재하지 않습니다.

저는 목표-C 프로젝트에서 스위프트를 사용하기 시작하고 싶습니다.그래서 빠른 클래스를 추가했습니다.

import Foundation
@objc class System : NSObject {
    @objc func printSome() {
        println("Print line System");
    }
}

그리고 이 파일을 .m 파일:

#import "MyProjectName-Swift.h"

프로젝트를 빌드할 때 다음 오류가 발생합니다.

Bridging header 'PathToMyProject/MyProjectName-Bridging-Header.h' does not exist

참고: "Build Settings->Swift Compiler - Code Generation->Objective-C Briding Header"에서 "MyProjectName-Briding-Header.h"로 설정됩니다.

이 문제를 해결하려면 어떻게 해야 합니까?

어떤 도움이든 감사합니다.

편집: Bridging-Header 파일: #if defined(__has_include) &&_has_include() #include #endif

#include <objc/NSObject.h>
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>

#if defined(__has_include) && __has_include(<uchar.h>)
# include <uchar.h>
#elif __cplusplus < 201103L
typedef uint_least16_t char16_t;
typedef uint_least32_t char32_t;
#endif
#if !defined(SWIFT_PASTE)
# define SWIFT_PASTE_HELPER(x, y) x##y
# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y)
#endif
#if !defined(SWIFT_METATYPE)
# define SWIFT_METATYPE(X) Class
#endif

#if defined(__has_attribute) && __has_attribute(objc_runtime_name)
# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X)))
#else
# define SWIFT_RUNTIME_NAME(X)
#endif
#if !defined(SWIFT_CLASS_EXTRA)
# define SWIFT_CLASS_EXTRA
#endif
#if !defined(SWIFT_PROTOCOL_EXTRA)
# define SWIFT_PROTOCOL_EXTRA
#endif
#if !defined(SWIFT_CLASS)
# if defined(__has_attribute) && __has_attribute(objc_subclassing_restricted) 
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA
# else
#  define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA
# endif
#endif

#if !defined(SWIFT_PROTOCOL)
# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA
#endif

#if !defined(SWIFT_EXTENSION)
# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__)
#endif

#if !defined(OBJC_DESIGNATED_INITIALIZER)
# if defined(__has_attribute) && __has_attribute(objc_designated_initializer)
#  define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer))
# else
#  define OBJC_DESIGNATED_INITIALIZER
# endif
#endif
#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch"

#if defined(__has_feature) && __has_feature(modules)
#endif

#pragma clang diagnostic pop

브리징 파일이 다른 클래스와 동일한 수준으로 작성된 경우 다음 그림과 같이 상대 경로를 추가해야 할 수 있습니다.됩니다.여기에 이미지 설명 입력

설정에서 했습니다.여기에 이미지 설명 입력

하지만 컴파일러는 파일을 찾지 못합니다. 여기에 이미지 설명 입력

하면 (따서프의즉루상추경면가하로대를서다, 트추니합가트에)./ProjectName/BridgerFileName.h),여기에 이미지 설명 입력

되고 나의 수 : 이제컴파되일목표 C클의메호를수출있다습니할소드스.여기에 이미지 설명 입력

브리지 헤더 파일을 수동으로 만들고 기본 이름과 위치를 선택한 후 브리지 헤더가 루트 디렉터리 아래에 있는 프로젝트 디렉터리에 배치된다는 것을 알게 되었습니다.

이 설정에는 다음 값이 필요합니다.Targets > [당신의 앱 Target] > 빌드 설정 > 스위프트 컴파일러 - 코드 생성 > Objective-C Bridging Header:

$(SRCROOT)/$(PROJECT_NAME)/$(PROJECT_NAME)-Bridging-Header.h 

프로젝트가 신속한 모듈(프레임워크)인 경우 코멘트에서 지적한 바와 같이 다음을 선호할 수 있습니다.

$(SRCROOT)/$(PROJECT_NAME)/$(SWIFT_MODULE_NAME)-Bridging-Header.h

브리징 헤더를 제거하는 사용자용

저는 여기 있는 대부분의 다른 대답들처럼 반대 방향으로 가고 있었습니다.이전에 Bridging Header를 사용했지만 더 이상 필요하지 않았습니다.프로젝트에서 삭제한 후 질문에 언급된 오류가 발생하기 시작했습니다.저는 제 문제를 해결하기 위해 다음 단계를 수행했습니다.

  1. Targets > [Your App Target] > Build Settings > Swift Compiler - General > Objective-C Bridging Header로 이동하여 경로를 삭제합니다. (@Donamite 덕분에) ①검색창에 bridging을 입력하면 찾을 수 있습니다.
  2. 파생일자를삭제합니다.Xcode > Preferences > Locations로 이동하여 Derived Data 폴더 옆의 회색 화살표를 클릭합니다.그런 다음 프로젝트 폴더를 삭제합니다.

여기에 이미지 설명 입력

Swift 4.1에서

당신이 가지고 있지 않은 당신의 프로젝트.bridging-Header.h파일, 그러나 프로젝트에 해당 경로가 있습니다.이를 위해 해당 경로를 삭제해야 합니다.

에 가다targets파일로 작성하여 선택Build Settings, ---->Swift Compiler - General합니다.bridging-Header.h아래 스크린샷을 따라갑니다.여기에 이미지 설명 입력

를 합니다.bridging-Header.h - 파일 - 파일

여기에 이미지 설명 입력

이제 이런 식으로...

여기에 이미지 설명 입력

다음은 Bridging 헤더를 작성하는 단계입니다.

  1. 파일->새로 만들기->iOS->헤더 파일, 브리징 파일 이름을 "yourProjectName-Bridging-Header"와 같이 지정합니다.h"

  2. Build-Settings->Objective-C Bridging Header, Bridging Header 파일 이름을 "ProjectName-Bridging-Header"와 같이 지정합니다.h"

    참고: 브리징 헤더 파일은 ".xcodeproj" 파일이 있는 프로젝트의 주 루트 폴더에 있어야 합니다.그렇지 않으면 Bridging 헤더 파일을 프로젝트의 루트 폴더로 이동합니다.이렇게 하면 Xcode가 브리지 파일에 액세스할 수 있습니다.

  3. 프로젝트를 빌드하고 브리징 헤더에 필요한 파일을 가져옵니다.

Swift 프로젝트에 Bridge File을 추가합니다.

1단계. 파일로 이동 > Objective-C 파일로 코코아 추가(임시 목적)

여기에 이미지 설명 입력

2단계. 그러면 다음여기에 이미지 설명 입력 팝업이 나타납니다.

이제 Create Bridging Header 버튼을 누릅니다.

다 했어요.
BRIDE 파일이 번들로 제공됩니다.
감사해요.

브리징 헤더 파일 경로 앞에서 $(SRCROOT)/$(PROJECT_NAME)/를 사용하는 데 도움이 되었습니다.

나는 그것을 사용하는 데 도움이 되었습니다.$(SRCROOT)내 목표-C 브리징 헤더 경로 앞에.

$(SRCROOT)/swiftLibraries/swiftLibraries-Bridging-Header.h

다음 단계를 수행합니다.

  1. 브리징 헤더 파일을 삭제합니다. . . (수동으로 만들 수 있음) 및;
  2. Objective-C Project에서 새 Swift 파일을 만듭니다. . . (가져오기가 아니라 먼저 만듭니다.)

아마도 이 두 가지가 당신의 문제를 해결하는 데 도움이 될 것입니다.

다음은 저에게 효과가 있었습니다.

  1. 브리징 헤더 파일은 ".xcodeproj" 파일이 있는 프로젝트의 주 루트 폴더에 있어야 합니다.프로젝트 디렉터리로 이동하고 브리지 헤더가 다른 폴더 내에 있는 경우 루트로 끌어다 놓습니다.
  2. 헤더 이름의 철자 오류를 수정합니다.
  3. 파생 데이터 지우기
  4. Target -> Build Settings -> Swift Compiler : General -> Obj C Header 이름 추가
  5. 치료하고 다시 실행합니다.

수동으로 브리징 헤더 파일 만들기

우선 Xcode가 생성된 Bridging 헤더 파일을 삭제합니다.그리고 프로젝트 이동 > 빌드 설정 > 키워드 검색으로 이동합니다.Swift 컴파일러 - 코드 생성.Objective-C Bridging Header를 클릭하고 해당 경로를 삭제합니다.이제 프로젝트를 정리합니다.

이제 탐색 모음에서 프로젝트 > 창을 선택하고 프로젝트를 선택한 후 파생된 데이터를 삭제합니다.

이제 새 파일을 만들고 소스를 선택한 다음 헤더 파일을 선택하고 브리징 헤더 파일을 만듭니다. 파일 이름은 projectname-Bridging-Header.h여야 합니다.

프로젝트 이동 > 빌드 설정 > 키워드 검색으로 이동합니다.Swift 컴파일러 - 코드 생성.Object-C Bridging Header를 클릭하고 이제 projectname-Bridging-Header.h와 같은 Object-C Bridging Header에 경로를 추가합니다.

이제 클래스를 브리징 헤더 파일로 가져오면 코드를 쉽게 컴파일할 수 있습니다.

브리징 헤더 파일은 수동으로 파일을 만들 때 다음과 같이 나타납니다.

제가 도움이 된 것은 오류 메시지에 언급된 경로로 파일을 수동으로 이동하는 것입니다.그래서:

  1. 파일을 삭제했습니다(휴지통으로 이동됨).
  2. 오류 메시지의 휴지통에서 경로로 이동
  3. 나중에 나는 또한 프로젝트를 청소해야 했습니다.

언급URL : https://stackoverflow.com/questions/26096402/xcode-myprojectname-bridging-header-h-does-not-exist

반응형