[swift-users] Binding Regular C Functions (Gtk, Cairo, etc.)

Gage Morgan gagemorgan at outlook.com
Wed Dec 9 05:39:35 CST 2015


Jason,The Link: part of the module.modulemap seems to look for libcairo.so but then outputs the errors shown previously. Instead of CCAiro not found, it becomes "couldn't link library" though the absolute path exists.
Cheers,--MGage--
Sent from Outlook Mobile




On Tue, Dec 8, 2015 at 8:08 PM -0800, "Jason Dusek" <jason.dusek at gmail.com> wrote:





Gage,

For what it's worth, after running `git init` and `git tag -f 1.0.0`
in `CCairo` to get something importable, I run into this error:

:;  swift build
Cloning Packages/CCairo
<unknown>:0: error: no such file or directory:
'/Users/solidsnack/Downloads/Sources/example/Packages/CCairo/Package.swift'


On Tue, 8 Dec 2015 at 18:22 Gage Morgan via swift-users
<swift-users at swift.org> wrote:
>
> Okay, I've filed a report. To make it easier, the thing's code is SR-152.
>
> https://bugs.swift.org/browse/SR-152
>
> ________________________________
> From: gagemorgan at outlook.com
> To: mawadah at apple.com; gagemorgan at 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 at apple.com; swift-users at 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 at swift.org
>
>
>
>
> ________________________________
> From: gagemorgan at outlook.com
> To: mawadah at 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 at apple.com
> Subject: Re: [swift-users] Binding Regular C Functions (Gtk, Cairo, etc.)
> Date: Mon, 7 Dec 2015 19:27:56 -0800
> To: gagemorgan at 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 at 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 at 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 at 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 at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
>
>
>
>
> _______________________________________________ swift-users mailing list swift-users at swift.org https://lists.swift.org/mailman/listinfo/swift-users
> _______________________________________________
> swift-users mailing list
> swift-users at swift.org
> https://lists.swift.org/mailman/listinfo/swift-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20151209/b9039d77/attachment.html>


More information about the swift-users mailing list