Moim celem jest, aby uruchomić mój program Swift jak skrypt. Jeżeli cały program jest samowystarczalny, można uruchomić go lubię:xcrun swift z linii poleceń wygenerować <unknown>: 0: błąd: nie można załadować biblioteki współdzielonej
% xcrun swift hello.swift
gdzie hello.swift jest
import Cocoa
println("hello")
Jednakże chcę pójść o krok poza to, i to moduł szybkiego, gdzie mogę importować inne klasy, funcs itd
Więc powiedzmy, że mamy naprawdę dobrą klasę chcemy wykorzystać w GoodClass.swift
public class GoodClass {
public init() {}
public func sayHello() {
println("hello")
}
}
Teraz chciałbym zaimportować ten jare do mojego hello.swift:
import Cocoa
import GoodClass
let myGoodClass = GoodClass()
myGoodClass.sayHello()
raz pierwszy wygenerowania .o, lib <> .a, .swiftmodule uruchamiając nich:
% xcrun swiftc -emit-library -emit-object GoodClass.swift -sdk $(xcrun --show-sdk-path --sdk macosx) -module-name GoodClass
% ar rcs libGoodClass.a GoodClass.o
% xcrun swiftc -emit-module GoodClass.swift -sdk $(xcrun --show-sdk-path --sdk macosx) -module-name GoodClass
wreszcie , ja przygotowując uruchomić mój hello.swift (jakby to skrypt):
% xcrun swift -I "./" -L "./" -lGoodClass -sdk $(xcrun --show-sdk-path --sdk macosx) hello.swift
Ale mam ten błąd:
< unknown >:0: error: could not load shared library 'libGoodClass'
Co to oznacza? Czego mi brakuje. Jeśli pójdę dalej i zrobię link/kompilację podobne do tego, co robisz dla C/C++:
% xcrun swiftc -o hello -I "./" -L "./" -lGoodClass -sdk $(xcrun --show-sdk-path --sdk macosx) hello.swift
% ./hello
Wtedy wszystko jest szczęśliwe. Myślę, że mógłbym z tym żyć, ale nadal chcę zrozumieć ten błąd w bibliotece współdzielonej.