On Tue, 8 Dec 2015 at 18:22 Gage Morgan via swift-users <swift-users@swift.org> wrote:
Okay, I've filed a report. To make it easier, the thing's code is SR-152.
[SR-152] Cannot Link Against Cairo 2D Graphics Library · Issue #816 · apple/swift-llbuild · GitHub
________________________________
From: gagemorgan@outlook.com
To: mawadah@apple.com; gagemorgan@outlook.com
Subject: RE: [swift-users] Binding Regular C Functions (Gtk, Cairo, etc.)
Date: Tue, 8 Dec 2015 18:11:03 -0500
What I'd like to know is, what is the "link: " part of the module.modulemap for? I pasted in the cairo.so part, but this only said that after doing so. I'd honestly just like to make sure this works.
________________________________
To: mawadah@apple.com; swift-users@swift.org
Date: Tue, 8 Dec 2015 18:07:25 -0500
Subject: Re: [swift-users] Binding Regular C Functions (Gtk, Cairo, etc.)
From: swift-users@swift.org
________________________________
From: gagemorgan@outlook.com
To: mawadah@apple.com
Subject: RE: [swift-users] Binding Regular C Functions (Gtk, Cairo, etc.)
Date: Tue, 8 Dec 2015 18:03:42 -0500
So...including cairo in an app returns this:
Linking Executable: .build/debug/example
/usr/bin/ld: cannot find -l/usr/lib/x86_64-linux-gnu/libcairo.so
clang: error: linker command failed with exit code 1 (use -v to see invocation)
<unknown>:0: error: link command failed with exit code 1 (use -v to see invocation)
<unknown>:0: error: build had 1 command failures
swift-build: exit(1): ["/home/mgage/Downloads/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu15.10/usr/bin/swift-build-tool", "-f", "/home/mgage/Sources/example/.build/debug/example.o/llbuild.yaml"]
What went amiss?
________________________________
From: mawadah@apple.com
Subject: Re: [swift-users] Binding Regular C Functions (Gtk, Cairo, etc.)
Date: Mon, 7 Dec 2015 19:27:56 -0800
To: gagemorgan@outlook.com
Once you have followed the instructions to create a system package, your own package declares a dependency on that package. This is also covered in those steps.
To use the C APIs in your code, simply import the name of the module (as defined by the modulemap entry) in your swift file. It should just work.
For instance, in the example from the sysmodules doc link I sent, you just
import CJPEG
The C functions will have the same name in Swift as their C counterparts. The types might adjust to UnsafePointer etc.. For a list of those Swift bindings, run the REPL and import your module, then perform “:type lookup Module” to get a printout of available APIs.
- mish
On Dec 7, 2015, at 6:40 PM, Gage Morgan <gagemorgan@outlook.com> wrote:
I read that. What I want to know is how to bind the functions themselves after creating a system package. How to use the c functions that got imported, if you will.
Sent from Outlook
On Mon, Dec 7, 2015 at 6:39 PM -0800, "Mish Awadah" <mawadah@apple.com> wrote:
Please see the reference at https://github.com/apple/swift-package-manager/blob/master/Documentation/SystemModules.md
- mish
On Dec 7, 2015, at 6:33 PM, Gage Morgan via swift-users <swift-users@swift.org> wrote:
For any project: How is a C to Swift function binding created? I'd like to know how to import C functions to Swift. Once I can do this successfully, I'll be all set.
Sent from Outlook
_______________________________________________
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
_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users