libpng를 사용한 c++ 라이브러리를 iPhone 앱에 통합
3482 단어 C++SwiftObjective-C
Swift에서 C++ 라이브러리를 호출하는 방법
swift에서 c++ 자산을 사용합시다 htps : // m / m에 c / ms / 37 예 52 아 18dcb5c0b51
중요한 포인트
아는 사람은 알고 있는 이야기입니다만, Mac과 iPhone에서는 CPU의 아키텍쳐가 다르다. 아래의 구성이 대부분일까.
그 때문에, 자작 라이브러리나 자작 라이브러리로 사용하고 있는 외부 라이브러리는 arm64와 X86_64로 빌드하지 않으면 안된다. 이를 모르고 상당히 고생했다.
자체 제작 라이브러리 빌드
C++의 빌드는 cmake를 사용하고 있었기 때문에 상당히 간단하게 할 수 있다. 흐름은 cmake로 Xcode의 프로젝트를 작성해, archintecture의 설정을 해 빌드하고, 마지막은 lipo 커멘드로 각각의 Architecture용으로 빌드된 static 라이브러리를 병합한다.
cmake project의 루트로 다음을 실행. Xcode 프로젝트가 생성됩니다.
cmake -G Xcode .
lipo 명령으로 각 라이브러리를 병합합니다. 예를 들어 xxx.a와 yyy.a를 병합하여 zzz.a를 ./Release 디렉토리에 저장하려면 다음과 같은 명령을 실행하십시오.
lipo -output ./Release/zzz.a -create ./Release-iphoneos/xxx.a ./Release-iphonesimulator/yyy.a
zlib arm64 및 x86_64 빌드
내가 만든 C++ 라이브러리는 libpng를 사용하므로 libpng도 arm64를 지원해야합니다. 또한 libpng는 내부적으로 zlib를 사용하기 때문에 zlib도 arm64 대응해야합니다. xlib는 xcodebuid 명령으로 빌드하고 libpng는 ./configure에 인수를 지정하여 빌드했습니다.
확장된 디렉토리로 이동하여 다음을 실행하여 Xcode 프로젝트 파일 만들기
cmake -G Xcode .
arm64
$ xcodebuild -project "zlib.xcodeproj" -sdk "iphoneos" IPHONEOS_DEPLOYMENT_TARGET="7.0" ARCHS="armv7 armv7s arm64" ONLY_ACTIVE_ARCH=NO clean build TARGET_BUILD_DIR="./install_zlib_arm64" -scheme="ALL_BUILD"
x86_64
$ xcodebuild -project "zlib.xcodeproj" -sdk "iphonesimulator" IPHONEOS_DEPLOYMENT_TARGET="7.0" ARCHS="x86
Reference
이 문제에 관하여(libpng를 사용한 c++ 라이브러리를 iPhone 앱에 통합), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/yugitti/items/b9ba4a13ff43197da4d5텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)