SwiftPM으로 C 언어가 포함된 라이브러리 만들기
SwiftPM으로 C 언어가 포함 된 라이브러리를 만들었습니다.
동작의 모습
world의 swift의 wrapper를 공개했습니다 - iPhone에서 보이첸을 할 수 있습니다! htps // t. 코/t2Y3Bvhvぃ 피 c. 라고 r. 이 m/b7아이 4F1Qkr — 후지키 (@fzkqi) February 17, 2020
Vocoder 자체의 이야기는 이쪽
WorldInApple 구현
 했던 일
-  공식 문서의 Creating C Language Targets와 같습니다 
-  C++로 구현 된 World 본문의 대상을 만들고 Swift 래퍼의 대상에서 종속했습니다.
 
 Package.swift
->htps : // 기주 b. 이 m/후지키/를 rlぢ나 pぇ/bぉb/로 수 ft
import PackageDescription
let package = Package(
    name: "WorldInApple",
    platforms: [.iOS(.v11), .macOS(SupportedPlatform.MacOSVersion.v10_15)],
    products: [
        .library(
            name: "WorldInApple",
            targets: ["WorldInApple"]),
    ],
    targets: [
        // C++ で書かれた、World 本体
        .target(
            name: "WorldLib"
        ),
        // WorldLib の Swift ラッパー
        .target(
            name: "WorldInApple",
            dependencies: ["WorldLib"]),  // WorldLib に依存
    ]
)
WorldLib
- C++ 로 구현된 World 본체입니다
-  SwiftPM에서 USER_HEADER_SEARCH_PATHS를 지정하는 방법을 찾을 수 없으므로 복사하여 헤더를 편집하고 있습니다.-  차이는 패치 파일에 요약되어 있습니다.
 htps : // 기주 b. 이 m/후지키/를 rlぢ나 pぇ/bぉb/로 ゔぇぉp/훗 x-를 rld-에 어서 r파 th. 파 tch
 
 
 
-  차이는 패치 파일에 요약되어 있습니다.
WorldLib/include/World.h
->htps : // 기주 b. 이 m/후지키/를 rlぢ나 pぇ/bぉb/로 ゔぇぉp/그래서 s/를 rlddb/인 cぅ로/를 rld. h
- WorldLib의 공개 헤더입니다.
- World에 필요한 헤더를 게시하고 있습니다
#import "../world/dio.h"
#import "../world/stonemask.h"
#import "../world/cheaptrick.h"
#import "../world/d4c.h"
#import "../world/synthesis.h"
#import "../world/harvest.h"
#import "../world/synthesisrealtime.h"
#import "../world/matlabfunctions.h"
WorldInApple
- WorldLib의 Swift 래퍼입니다
- import WorldLibWorld로 정의 된 기능을 사용할 수 있습니다.
->htps : // 기주 b. 코 m / 후지 키 / rl ぢ p / b b Shichi s Chima와 r. 수 ft
import WorldLib
public class AperiodicityEstimator: WorldInAppleComponents {
    private var d4cOption = D4COption() // World で定義された構造体が利用できる
    //〜中略〜
    public func estimatAperiodicity(x: UnsafeMutablePointer<Double>, x_length: Int32) {
        // World で定義された関数が利用できる
        D4C(x, x_length, Int32(parameters.fs), parameters.time_axis, parameters.f0, Int32(parameters.f0_length), Int32(parameters.fft_size), &d4cOption, parameters.aperiodicity)
    }
}
샘플 구현(Examples)
-  WorldInApple 패키지에서 참조되지 않도록 더미 Package.swift를 배치했습니다.
 
 
->htps : // 기주 b. 이 m/후지키/를 rlぢ나 pぇ/bぉb/로 수 ft
import PackageDescription
let package = Package(
  name: "dummy",
  products: [],
  targets: []
)
- WorldInApple.xcworkspace에서 실행 가능
-  Examples 프로젝트와 WorldInApple 패키지가 들어 있습니다.
-  Examples 타겟으로부터 WorldInApple를 참조합니다.
- import WorldInApple이렇게하면 만든 World Swift 래퍼를 사용할 수 있습니다
->htps : // 기주 b. 이 m/후지키/를 rlぢ나 pぇ/bぉb/로 수 ft
import AVFoundation
import Combine
import Foundation
import SwiftUI
import WorldInApple
class ContentViewModel: ObservableObject {
    private let world = WorldInApple(fs: 48000, frame_period: 5, x_length: 38400)
    // 〜中略〜
}
게시 & 사용
-  GitHub에 push하여 pure swift 패키지와 마찬가지로 사용할 수있었습니다.
 
 
                
                    
        
    
    
    
    
    
                
                
                
                
                    
                        
                            
                            
                            Reference
                            
                            이 문제에 관하여(SwiftPM으로 C 언어가 포함된 라이브러리 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
                                
                                https://qiita.com/fuziki/items/2809e3dcfcb6360c3642
                            
                            
                            
                                텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                            
                            
                                
                                
                                 우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            
                            
                        
                    
                
                
                
            
Reference
이 문제에 관하여(SwiftPM으로 C 언어가 포함된 라이브러리 만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/fuziki/items/2809e3dcfcb6360c3642텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
                                
                                
                                
                                
                                
                                우수한 개발자 콘텐츠 발견에 전념
                                (Collection and Share based on the CC Protocol.)
                            


