내 라이브러리를 CocoaPod로 사용하는 데 어려움을 겪고 있으며 올바른 방향을 알려주는 도움을 주시면 감사하겠습니다.
나는 전에 Pod를 만든 적이 없으며 이것이 작동하는 지점까지 모든 것을 가지고 있다고 느낍니다 ... 컴파일되지 않은 .h
/ .m
/ .swift
파일 이있는 간단한 pod 라면 그러나 내 라이브러리에는 컴파일 된 .a
파일이 있습니다 , 내 라이브러리에서 사용하는 정적 라이브러리입니다.
Xcode의 프로젝트는 Objective-C 라이브러리를 라이브러리로 컴파일하도록 설정되어 .a
있습니다. 이 파일을 Xcode에서 컴파일하면 전혀 문제없이이 파일을 생성하지만 podspec을 린트하려고하면 연결하려는 정적 라이브러리와 관련된 것처럼 보이는 링커 오류가 발생합니다.
#
# Be sure to run `pod lib lint NAME.podspec' to ensure this is a
# valid spec and remove all comments before submitting the spec.
#
# To learn more about a Podspec see http://guides.cocoapods.org/syntax/podspec.html
#
Pod::Spec.new do |s|
s.name = "SQLConnect"
s.version = "1.2.0"
s.summary = "Connects apps to SQL Server"
s.description = <<-DESC
A library for connecting Objective-C & Swift apps to SQL Server
DESC
s.homepage = "http://importblogkit.com"
s.license = 'MIT'
s.authors = { "Nick Griffith" => "[email protected]" }
s.social_media_url = 'https://twitter.com/importBlogKit'
s.source = { :git => "https://github.com/nhgrif/SQLConnect.git", :tag => s.version.to_s }
s.platform = :ios, '8.0'
s.ios.deployment_target = '8.0'
s.requires_arc = true
s.public_header_files = 'SQLConnect/*.h', 'SQLConnect/SQLSettings/*.h', 'SQLConnect/SQLControllers/*.h', 'SQLConnect/SQLConnection/*.h'
s.source_files = 'SQLConnect/**/*.{h,m}'
s.preserve_paths = 'SQLConnect/**/*.*'
s.vendored_libraries = 'SQLConnect/FreeTDS/libfreetds.a'
s.xcconfig = { 'HEADER_SEARCH_PATHS' => "${PODS_ROOT}/#{s.name}/SQLConnect/**" }
end
라이브러리를 하위 사양으로 만드는 것과 같은 다른 접근 방식도 시도했지만 아무것도 작동하지 않는 것 같습니다.
Xcode에서 잘 컴파일되지만 linter는 링커 오류를 제공합니다.
The following build commands failed:
Ld /var/folders/yj/h_f7h7ws3zzfd__f847qys3m0000gn/T/CocoaPods/Lint/build/Pods.build/Release-iphonesimulator/Pods-SQLConnect.build/Objects-normal/i386/SQLConnect normal i386
Ld /var/folders/yj/h_f7h7ws3zzfd__f847qys3m0000gn/T/CocoaPods/Lint/build/Pods.build/Release-iphonesimulator/Pods-SQLConnect.build/Objects-normal/x86_64/SQLConnect normal x86_64
(2 failures)
-> SQLConnect (1.2.0)
- ERROR | [iOS] Returned an unsuccessful exit code.
- NOTE | clang: error: linker command failed with exit code 1 (use -v to see invocation)
Analyzed 1 podspec.
[!] The spec did not pass validation.
출력을 위로 스크롤하면 다음 오류를 찾을 수 있습니다.
Undefined symbols for architecture i386:
"_iconv", referenced from:
_tds_iconv_init in libfreetds.a(iconv.o)
_tds_iconv in libfreetds.a(iconv.o)
_skip_one_input_sequence in libfreetds.a(iconv.o)
_tds_iconv_fread in libfreetds.a(iconv.o)
(maybe you meant: _tds_iconv_close, _tds_iconv_get , _tds_iconv , _tds_iconv_alloc , _tds_iconv_free , _tds_iconv_from_collate , _tds_iconv_open , _tds_iconv_fread )
"_iconv_close", referenced from:
_tds_iconv_init in libfreetds.a(iconv.o)
_tds_iconv in libfreetds.a(iconv.o)
_skip_one_input_sequence in libfreetds.a(iconv.o)
__iconv_close in libfreetds.a(iconv.o)
_tds_set_iconv_name in libfreetds.a(iconv.o)
(maybe you meant: _tds_iconv_close)
"_iconv_open", referenced from:
_tds_iconv_init in libfreetds.a(iconv.o)
_tds_iconv_info_init in libfreetds.a(iconv.o)
_tds_iconv in libfreetds.a(iconv.o)
_skip_one_input_sequence in libfreetds.a(iconv.o)
_tds_set_iconv_name in libfreetds.a(iconv.o)
(maybe you meant: _tds_iconv_open)
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
과
Undefined symbols for architecture x86_64:
"_iconv", referenced from:
_tds_iconv_open in libfreetds.a(iconv.o)
_tds_iconv in libfreetds.a(iconv.o)
_tds_iconv_fread in libfreetds.a(iconv.o)
(maybe you meant: _tds_iconv_close, _tds_iconv_get , _tds_iconv , _tds_iconv_alloc , _tds_iconv_free , _tds_iconv_from_collate , _tds_iconv_open , _tds_iconv_fread )
"_iconv_close", referenced from:
_tds_iconv_open in libfreetds.a(iconv.o)
_tds_iconv_info_close in libfreetds.a(iconv.o)
_tds_iconv in libfreetds.a(iconv.o)
_tds_set_iconv_name in libfreetds.a(iconv.o)
(maybe you meant: _tds_iconv_close)
"_iconv_open", referenced from:
_tds_iconv_open in libfreetds.a(iconv.o)
_tds_iconv_info_init in libfreetds.a(iconv.o)
_tds_iconv in libfreetds.a(iconv.o)
_tds_set_iconv_name in libfreetds.a(iconv.o)
(maybe you meant: _tds_iconv_open)
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
이것은 프로젝트에 문제가 있음을 나타내는 것 같지만 문제 .a
없이 컴파일 할 수 있습니다. 또한 원시 소스 파일 또는 결과 .a
파일 (libFreeTDS.a뿐만 아니라 내 libSQLConnect.a)을 iOS 프로젝트로 드래그하여이 라이브러리를 사용했습니다 .
그렇다면이 작업을 포드로 만들려면 어떻게해야합니까?
라이브러리는 여기 Github 에서 찾을 수 있습니다 .
libiconv와 연결해야하는 것 같습니다. 첨가:
s.libraries = 'iconv'
당신의 포드에 당신이 거기에 도착할 것입니다.
수정 사항과 함께 Github에서 풀 요청을 보냈습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다