정적 라이브러리에서 iOS 링커 오류가 발생하는 이유는 무엇입니까?
혼합 언어 프레임워크를 프로젝트에 연결하는 데 문제가 있습니다.
저는 Swift와 Objective-C 클래스로 프레임워크를 만듭니다.
주요 로직은 스위프트 파일에 저장되었습니다.NSLog("Swift log가 호출되었습니다")를 호출하는 메서드를 사용하는 클래스입니다.
Objective-C 파일에는 Swift class의 인스턴스를 생성하고 Swift-log 메서드를 호출하는 메서드가 있는 클래스가 있습니다.
이 프레임워크를 Objective-C 프로젝트와 연결하여 이 프로젝트에 필요한 모든 것을 호출할 수 있지만 이 프로젝트를 빌드하려고 하면 오류가 발생합니다.
linker command failed with exit code 1 (use -v to see invocation)
그리고 경고:
ld: warning: Could not find auto-linked library 'swiftFoundation'
ld: warning: Could not find auto-linked library 'swiftDarwin'
ld: warning: Could not find auto-linked library 'swiftCoreFoundation'
ld: warning: Could not find auto-linked library 'swiftCore'
ld: warning: Could not find auto-linked library 'swiftCoreGraphics'
ld: warning: Could not find auto-linked library 'swiftObjectiveC'
ld: warning: Could not find auto-linked library 'swiftDispatch'
ld: warning: Could not find auto-linked library 'swiftSwiftOnoneSupport'
저도 빈 스위프트 파일을 가져오는 것으로 해결책을 보았지만 쓰레기가 없는 프로젝트를 만들어야 했습니다.
- ios/당신의 앱 이름을 엽니다.Xcode의 xcode 프로젝트
- 왼쪽의 Project Navigator(프로젝트 탐색기)에서 App Name(앱 이름)을 마우스 오른쪽 단추로 클릭하고 New File(새 파일)...(새 파일)을 클릭합니다.
- 프로젝트에 빈 Swift 파일 하나 만들기 (추가할 때 앱 이름 대상이 선택되었는지 확인)
- Xcode가 요청하면 Create Bridging Header를 누르고 Swift 파일을 제거하지 말고 빌드를 다시 실행합니다.
이렇게 하면 문제가 해결됩니다.
저의 경우 스위프트 포드 라이브러리를 추가한 후 리액트 네이티브 프로젝트였습니다.아마도 2단계만 작동할 수 있습니다.
- 새 Swift 파일 및 Bridde 헤더 추가:
순수한 objective-c 프로젝트의 경우 이를 추가해야 합니다.$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)
대상의 라이브러리 검색 경로로 이동합니다.이것은 제가 프로젝트에 신속하게 작성된 라이브러리를 목표-c에 포함할 때 효과가 있었습니다.
저는 유니티 프로젝트를 수출합니다.이전에는 bridging header를 눌러 빈 swift 파일을 추가하는 작업만 했습니다.
하지만 최근에 xCode를 12.3으로 업데이트해서 작동을 멈췄습니다.
그래서 다른 방법을 거의 시도하지 않았습니다.
추가했습니다.$(SDKROOT)/usr/lib/swift
설정 만들기 > 검색 경로 > 라이브러리 검색 경로입니다.
하지만 여전히 작동이 안 돼요.그래서 동일한 경로로 빌드 설정 > 검색 경로 > 라이브러리 검색 경로를 추가하였습니다.
$(TOOLCHAIN_DIR)/usr/lib/swift/$(PLATFORM_NAME)
$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)
이제 완벽하게 작동합니다.정확한 문제나 해결책을 얻지는 못했지만 이 방법으로 잘 작동합니다.
빌드 설정 > 검색 경로 > 라이브러리 검색 경로에 이 세 가지만 추가합니다.
- $(SDKROOT)/usr/lib/swift
- $(TOOLCHANE_DIR)/usr/lib/swift/$(PLATFORM_NAME)
- $(TOOLCHANE_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)
따로따로TOOLCHAIN_DIR
디렉토리가 작동하지 않습니다.추가하면$(SDKROOT)/usr/lib/swift
그 다음에야 가능합니다.
XCode 11 베타 4 라이브러리 검색 경로는 다음과 같습니다.
$(TOOLCHAIN_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)
- 프로젝트 이름을 마우스 오른쪽 단추로 클릭하고 새 swift 파일을 추가하면 File.swift로 남깁니다.
- 새 브리징 헤더 수락을 생성하라는 메시지가 표시됩니다.
- 프로젝트를 다시 실행합니다.
https://stackoverflow.com/a/50495316/1658268 에서 이 문제를 해결해 보십시오.
기본적으로 프로젝트에 더미 스위프트 파일을 추가하고 빌드를 다시 실행하면 됩니다.
xCode를 버전12로 업데이트 후 문제가 발생하고 오류가 발생하는 경우
자동 연결 라이브러리 'swiftWebKit'을(를) 찾거나 사용할 수 없습니다.
그리고 두개 더.
방금 추가했습니다.$(SDKROOT)/usr/lib/swift
빌드 설정 > 검색 경로 > 라이브러리 검색 경로로 이동합니다.
도움이 되길 바랍니다 :)
Xcode 버전이 >=12.2인 경우
에 가다
BuildSettings -> Linking -> runpath 검색 경로
덧붙이기/usr/lib/swift
다음과 같은 당신의 첫 번째 주장으로서:
Xcode 12.5, 리액트 네이티브.
변경 사항: Swift-5.0에서 Swift-5.2로 '도서관 검색 경로'
리액트 네이티브 프로젝트에서 제게 도움이 된 것은 이사하는 것입니다.$(inherited)
빌드 설정 -> 라이브러리 검색 경로 목록 하단으로
Xcode 기본 설정 » Components » Toolchain에서 Swift 5.0 스냅샷이 구성된 프로젝트를 실수로 컴파일할 때 동일한 오류가 발생했습니다.
로티 리액트 네이티브를 설치한 후 이 오류가 발생합니까?
이 솔루션은 로티 패키지 추가로 인해 발생한 경우에만 작동합니다.
효과가 있었습니다.
yarn add lottie-react-native
yarn add lottie-ios@3.2.3
그런 다음 실행해야 합니다.
pod install
or pod update
사용 중인 항목
"lottie-ios": "3.2.3",
"lottie-react-native": "^5.0.1",
"react": "17.0.2",
"react-native": "0.67.3"
X코드 11.3 베타, 스위프트 5.0
포드 파일에 내 대상을 추가할 뿐입니다.
platform :ios, '9.0'
use_frameworks!
inhibit_all_warnings!
def shared_pods
# Pods for NamaIOS
pod 'Alamofire'
pod 'RxSwift'
end
target 'MyApp' do
use_frameworks!
shared_pods
end
target 'MyApp-Test' do
use_frameworks!
shared_pods
end
target 'MyApp-Development' do
use_frameworks!
shared_pods
end
로티- react- native 설치 지침서에서 오는 경우 추가만 하면 됩니다.use_frameworks!
파일 #536 (댓글)을 pod에 저장합니다.
저는 안드로이드 프로그래머 입니다.그들이 무엇을 하는지 이해하는 데 시간이 좀 걸렸습니다.나는 현재 Xcode 13.2.1 그리고 내가 아는 끔찍한 조합 1개를 가지고 있습니다.다른 쪽에서 편집해주세요 xcode는 "I end"처럼 입력합니다. 빌드 설정 변경 > 검색 경로 > 라이브러리 검색 경로 :출처:
$(상속됨) $(PROJECT_DIR)/Flutter
대상:
$(상속됨) $(PROJECT_DIR)/플리터 $(SDKROOT)/usr/lib/swift $(TOOLCHANE_DIR)/usr/lib/swift/$(PLATFORM_NAME) $(TOOLCHANE_DIR)/usr/lib/swift-5.0/$(PLATFORM_NAME)
그게 다에요, 저는 몇몇 사람들을 돕고 싶어요.
Xcode 11 베타 4를 카르타고와 함께 사용하는 동안 이 오류가 발생할 경우 다음 해결 방법을 참조하십시오.
https://github.com/Carthage/Carthage/issues/2825
기본적으로 수정사항이 포함된 xcconfig를 생성하고 각 빌드에 이를 주입하는 것으로 구성됩니다.
새 프레임워크를 팟 파일에 추가하는 것만 잊어버립니다 :)
target 'Data' do
inherit! :search_paths
pod 'AlamofireObjectMapper', '~> 5.2'
끝.
Xcode 12.2의 경우
Void.swift라는 이름의 Xcode를 사용하여 Empty Swift 파일을 생성하면 모든 문제가 Xcode에 의해 자동으로 해결됩니다.
저는 저희 프로젝트에서 이 문제를 발견하게 되었는데 xcode 프로젝트 파일에 로티에 대한 고아 관련 언급이 있다는 것이 문제가 되었습니다.텍스트 편집기에서 그것을 열고 그것들을 제거하면 문제가 해결되었습니다.
제 리액트 네이티브 프로젝트에서 로티를 통합하려고 할 때 해결해 준 것은 npm으로 로티-ios 및 로티-리액트 네이티브 모듈을 제거하는 것이었습니다.
npm uninstall lottie-react-native lottie-ios
파일도 연결이 해제되었는지 확인합니다.
npx react-native unlink lottie-react-native lottie-ios
이전에 그 방법을 시도했지만 성공하지 못했던 브리징 파일도 프로젝트에 가지고 있었으므로, 제 프로세스를 복제하기 위해 제안된 답변을 따르고 그 파일도 프로젝트에 추가하세요.
이 단계 이후에 나는 계속해서 포드 폴더를 삭제하고 xc프로젝트와 xc워크스페이스에서 빌드를 청소했습니다(아마도 이 중 하나로 충분합니다).그 후 모듈을 다시 설치했습니다.
npm i --save lottie-react-native lottie-ios@3.1.3
(최신 버전은 로티레포에서 현재 부두를 확인해야 합니다.)
모듈을 다시 설치한 후 ios 폴더에 cd를 넣고 포드 설치를 실행합니다.
Xccode에서 xc 작업 공간을 열고 프로젝트를 실행합니다(빌드가 깨끗한지 확인하십시오).
이것으로 제 문제가 해결되었습니다.
행운을 빌어요.
언급URL : https://stackoverflow.com/questions/52536380/why-do-i-get-ios-linker-errors-with-my-static-libraries
'code' 카테고리의 다른 글
wp_insert_post(사용자 정의 분류법 포함) (0) | 2023.10.25 |
---|---|
부트스트랩 모드로 자동 완성 문제 발생 (0) | 2023.10.25 |
jQuery: 어떻게 하면 간단한 오버레이를 만들 수 있습니까? (0) | 2023.10.25 |
MySQL에 없는 경우 생성 프로시저를 말하는 방법 (0) | 2023.10.25 |
Git stash: "더러운 작업 트리에 적용할 수 없습니다. 변경 사항을 스테이징하십시오." (0) | 2023.10.25 |