Как связать с CoreGraphics framework из swift c в командной строке - PullRequest
0 голосов
/ 08 мая 2020

Я пишу программу командной строки и мне нужно использовать библиотеку CoreGraphics

Как мне go связать структуру CoreGraphics при использовании собственного swift c command?

Немного предыстории, чтобы объяснить причину:

  1. Я пытаюсь выполнить операции MPSMatrix (т.е. вычислительные операции) с помощью Apple MPS Библиотека.

  2. Мне нравится разрабатывать с использованием собственной командной строки, когда я пишу очень простые эксперименты, чтобы не увязнуть в наборах инструментов (например, xcode, быстрые пакеты)

  3. В документации Apple здесь указано, что вам необходимо связать структуру CoreGraphics для использования MPS даже в простом инструменте командной строки

  4. Быстрый Команда c, кажется, вводит Foundation, Metal и т.д. c. автоматически, но, похоже, не может автоматически найти и связать структуру CoreGraphics.

Программа, с которой я работаю в данный момент:

import CoreGraphics
import Metal
import Foundation
import Accelerate
import MetalPerformanceShaders

guard let device = MTLCreateSystemDefaultDevice() else {
    fatalError( "Failed to get the system's default Metal device." )
}

let N = 1000000

// Create a Metal buffer of length N
let buffer = device.makeBuffer(length: N * MemoryLayout<Float32>.size)

// Create a vector descriptor
let descriptor = MPSVectorDescriptor(length: N, dataType: .float32)

// Create a vector with descriptor
let vector = MPSVector(buffer: buffer!, descriptor: descriptor)

Это не удается на вызове MTLCreateSystemDefaultDevice () в данный момент, что, как я предполагаю, связано с тем, что я не связал структуру CoreGraphics - так что вопрос - как связать ее из командной строки.

1 Ответ

0 голосов
/ 08 мая 2020

OK Итак, я продолжил эксперименты и, по сути, просто скопировал структуру команд для clang. (Очень простой ответ):

swiftc -framework CoreGraphics myprog.swift
...