Right now, we don’t have an ‘official’ way to expose Swift APIs to C. However
there is the completely unsupported and subject to change or removal at any
time @_cdecl attribute. Eg,
@_cdecl(“bar_foo") public func foo(x: Int) -> Int { return x }
This defines a function callable from C as:
extern int bar_foo(int x);
I don’t suggest using this for anything serious because it has some known
problems and it’s going to change before it’s final (hence it’s undocumented,
underscored status).
If someone wants a starter project, finishing off @_cdecl (and getting it
through swift-evolution) would be really cool. My understanding is that the
main thing lacking is untangling some of the diagnostics code to consider C and
Objective-C separately, since C is more restrictive. We could even add support
to PrintAsObjC for generating pure-C “bridging headers”. :-)
As for actually building a shared library, that depends on if you’re using
Xcode or command line, Mac or Linux, etc. If you’re on the command line take a
look at the -emit-library flag to the swiftc driver.
Slava
> On Jan 9, 2017, at 5:57 PM, Zheng Ping via swift-users
> wrote:
>
> I want to compile swift code to dynamic library, and I can link this dynamic
> library to my C project. I don't know whether is it possible? Or whether I
> can do this in the future?
>
> --
> with kind regards
> ___
> swift-users mailing list
> swift-users@swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
___
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users