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

Gage Morgan gagemorgan at outlook.com
Tue Dec 8 20:21:56 CST 2015


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.soclang: 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 failuresswift-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 		 	   		   		 	   		  
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-users/attachments/20151208/4952437d/attachment.html>


More information about the swift-users mailing list