Program Tip

Swift 4.0으로 컴파일 된 모듈은 Swift 4.0.1에서 가져올 수 없습니다.

programtip 2020. 10. 11. 11:16
반응형

Swift 4.0으로 컴파일 된 모듈은 Swift 4.0.1에서 가져올 수 없습니다.


그러나 동일한 Xcode를 사용하여 프레임 워크를 다시 컴파일했지만 여전히이 오류가 발생합니다.

  • 두 가지 모두를위한 Base SDK iOS 11.1
  • Swift 언어 버전 Swift 4.0
  • 포드 / 카르타고를 사용하지 않음

누군가가 알기를 바랍니다


최신 정보:

Xcode 릴리스 버전의 경우 :

이 오류 (및 Swift 4.1, 4.2 등과 관련된 유사한 오류)는 이전 Xcode 도구로 빌드 된 프레임 워크를 사용하는 Xcode 9.1, 9.2, 9.3, 9.4, 10 등으로 프로젝트를 열 때 발생합니다.

문제를 해결하려면 Carthage ( carthage update --platform iOS), Cocoapods ( pod update또는 pod install)를 사용하거나 새로 업데이트 된 Xcode 도구를 사용하여 수동으로 프레임 워크를 업데이트하고 다시 빌드합니다 . 도구는 Xcode를 업데이트 할 때 자동으로 업데이트되어야하지만 그렇지 않은 경우 원래 답변에서 아래에 설명 된 단계를 따를 수 있습니다.

Xcode가 캐시 된 프레임 워크 빌드를 사용하지 않도록하려면 프로젝트 cmd + shift + k와 빌드 폴더 를 정리해야 할 수도 있습니다 cmd + option + shift + k.

경우에 따라 파생 데이터 폴더를 삭제해야 할 수도 있습니다 (Xcode 환경 설정-> 위치-> 파생 데이터 폴더로 이동하면 쉽게 찾을 수 있습니다 ( Thanks Stunner ).

Xcode 베타 버전의 경우 :

아래의 원래 답변을 참조하고 위의 단계를 따르십시오.

원래 답변 :

xcodebuild 도구가 Swift 4.0으로 빌드되고 Xcode 9.1 베타의 Swift 4.0.1과 호환되지 않는 Xcode 9.0으로 설정되어있을 것입니다.

다음 명령을 사용하여 터미널을 체크인하십시오.

xcodebuild -version

또는 Xcode 환경 설정-> 위치로 이동하여 명령 줄 도구를 Xcode 9.1로 확인 / 변경하십시오. 그러면 설정해야합니다.


내 문제는 Swift 4.0.2 용으로 컴파일되지 않은 외부 프레임 워크 때문이었습니다. Carthage를 통해이 파일을 추가 했으므로 다음을 실행합니다.

carthage update --platform iOS

그런 다음 프로젝트를 정리하고 cmd + shift + k폴더를 빌드 cmd + option + shift + k하고 파생 된 데이터 폴더를 삭제 (단순히 휴지통으로 이동하는 것도 가능)하는 것이 저에게 효과적이었습니다.


여기 에서 작동하던 특정 Xcode 버전의 Xcode Toolchain을 설치 하십시오 .

Xcode 도구 모음에는 특정 버전의 Swift에서 작업하기위한 일관된 개발 경험을 제공하는 데 필요한 컴파일러, lldb 및 기타 관련 도구의 사본이 포함되어 있습니다.

Xcode의 환경 설정을 열고 구성 요소> 도구 체인으로 이동 한 다음 설치된 Swift 도구 체인을 선택하십시오.

이렇게하면 지금은 앱을 컴파일하고 실행할 수 있습니다.


제 경우에는 SwiftUI를 테스트하기 위해 xCode 11 베타 버전을 다운로드했습니다. 프로젝트를 실행할 때 "Swift 5.1로 컴파일 된 모듈은 Swift 5.0.1 컴파일러에서 가져올 수 없습니다 : ..." 오류가 발생합니다.

이 문제를 해결하려면. xCode 명령 줄 도구를 새로운 xCode 11 주석 줄 도구로 변경했습니다. 그 후 SwiftUI로 새로운 xcode 프로젝트를 만들 수 있습니다.

Xcode-> 환경 설정-> 위치-> XCode 명령 줄 도구

Xcode Commend Line 도구

나는 이것이 새로운 freamework로 테스트하려는 사람을 도울 것입니다. :)


저는 Swift 4.2를 추가하는 Xcode 10 베타에서이 문제를 해결했습니다. 내 문제는 Carthage 또는 외부 종속성과 관련이 없습니다.

YourTarget > Build Settings > Swift Language Version모든 Xcode 대상으로 이동 하십시오.

내 모든 설정이 Swift 4.

파일 복사 빌드 단계를 추가 한 후 오류가 발생하기 시작했습니다.

: 0 : 오류 : Swift 4.1.2로 컴파일 된 모듈은 Swift 4.2 컴파일러에서 가져올 수 없습니다. /Users/user/Library/Developer/Xcode/DerivedData/MyApp-faskfrihumfcdibjxisjvbfshppp/Build/Intermediates.noindex/MyApp.build/Debug/ MyAppExtension.build/Objects-normal/x86_64/MyClass~partial.swiftmodule

0이 아닌 종료 코드로 인해 MergeSwiftModule 명령이 실패했습니다.

나는 각 목표의 설정 Swift Language VersionSwift 4.2오류를 제거하는합니다.

그러나 모든 대상을 Swift 4똑같이 유효하게 설정 해야하므로 처음에 오류가 발생하는 이유를 잘 모르겠습니다 .


제 경우 (Xcode 9.2) :

나는 Xcode에 갔다 Preferences > Locations > Derived Data

그런 다음 데이터를 삭제하고 깨끗한 빌드를 수행했으며 괜찮 았습니다.


제 경우에는 플러그인과 함께 CocoaPods를 사용 cocoapods-binary하여 라이브러리를 바이너리로 미리 빌드했습니다 . Xcode를 10에서 11로 업그레이드 한 후 Xcode에서 다음 오류가 발생합니다.

Module compiled with Swift 5.0.1 cannot be imported by the Swift 5.1 compiler

/Pods디렉토리 를 제거하고 pod install.

참고 URL : https://stackoverflow.com/questions/46726077/module-compiled-with-swift-4-0-cannot-be-imported-in-swift-4-0-1

반응형