<html>
<head>
<style><!--
.hmmessage P
{
margin:0px;
padding:0px
}
body.hmmessage
{
font-size: 12pt;
font-family:Calibri
}
--></style></head>
<body class='hmmessage'><div dir='ltr'>Okay, I've filed a report. To make it easier, the thing's code is SR-152.<div><br></div><div><a href="https://bugs.swift.org/browse/SR-152" target="_blank">https://bugs.swift.org/browse/SR-152</a><br><br><div><hr id="stopSpelling">From: gagemorgan@outlook.com<br>To: mawadah@apple.com; gagemorgan@outlook.com<br>Subject: RE: [swift-users] Binding Regular C Functions (Gtk, Cairo, etc.)<br>Date: Tue, 8 Dec 2015 18:11:03 -0500<br><br>

<style><!--
.ExternalClass .ecxhmmessage P {
padding:0px;
}

.ExternalClass body.ecxhmmessage {
font-size:12pt;
font-family:Calibri;
}

--></style>
<div dir="ltr">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.<br><br><div><hr id="ecxstopSpelling">To: mawadah@apple.com; swift-users@swift.org<br>Date: Tue, 8 Dec 2015 18:07:25 -0500<br>Subject: Re: [swift-users] Binding Regular C Functions (Gtk, Cairo, etc.)<br>From: swift-users@swift.org<br><br>

<style><!--
.ExternalClass .ecxhmmessage P {
padding:0px;
}

.ExternalClass body.ecxhmmessage {
font-size:12pt;
font-family:Calibri;
}


--></style>
<div dir="ltr"><br><br><div><hr id="ecxstopSpelling">From: gagemorgan@outlook.com<br>To: mawadah@apple.com<br>Subject: RE: [swift-users] Binding Regular C Functions (Gtk, Cairo, etc.)<br>Date: Tue, 8 Dec 2015 18:03:42 -0500<br><br>

<style><!--
.ExternalClass .ecxhmmessage P {
padding:0px;
}

.ExternalClass body.ecxhmmessage {
font-size:12pt;
font-family:Calibri;
}


--></style>
<div dir="ltr">So...including cairo in an app returns this:<div><br></div><div><div>Linking Executable: &nbsp;.build/debug/example</div><div>/usr/bin/ld: cannot find -l/usr/lib/x86_64-linux-gnu/libcairo.so</div><div>clang: error: linker command failed with exit code 1 (use -v to see invocation)</div><div>&lt;unknown&gt;:0: error: link command failed with exit code 1 (use -v to see invocation)</div><div>&lt;unknown&gt;:0: error: build had 1 command failures</div><div>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"]</div><div><br></div><div>What went amiss?</div><br><div><hr id="ecxstopSpelling">From: mawadah@apple.com<br>Subject: Re: [swift-users] Binding Regular C Functions (Gtk, Cairo, etc.)<br>Date: Mon, 7 Dec 2015 19:27:56 -0800<br>To: gagemorgan@outlook.com<br><br>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.&nbsp;<div><br></div><div>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.&nbsp;</div><div><br></div><div>For instance, in the example from the sysmodules doc link I sent, you just&nbsp;</div><div><br></div><div><pre style="box-sizing:border-box;overflow:auto;font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace;line-height:1.45;padding:16px;background-color:rgb(247, 247, 247);border-top-left-radius:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;border-bottom-left-radius:3px;word-wrap:normal;word-break:normal;color:rgb(51, 51, 51);"><span class="ecxpl-k" style="box-sizing:border-box;color:rgb(167, 29, 93);">import</span> <span class="ecxpl-c1" style="box-sizing:border-box;color:rgb(0, 134, 179);">CJPEG</span></pre><div><br></div></div><div><br></div><div>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.</div><div><br></div><div>- mish<br><div><br><div><blockquote><div>On Dec 7, 2015, at 6:40 PM, Gage Morgan &lt;<a href="mailto:gagemorgan@outlook.com">gagemorgan@outlook.com</a>&gt; wrote:</div><br class="ecxApple-interchange-newline"><div>



<div>
<div>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.&nbsp;<br>
<br>
<div class="ecxacompli_signature">Sent from <a href="http://aka.ms/Ox5hz3" target="_blank">Outlook</a></div>
<br>
</div>
<br>
<br>
<br>
<div class="ecxgmail_quote">On Mon, Dec 7, 2015 at 6:39 PM -0800, "Mish Awadah" <span dir="ltr">
&lt;<a href="mailto:mawadah@apple.com" target="_blank">mawadah@apple.com</a>&gt;</span> wrote:<br>
<br>
</div>
<div style="word-wrap:break-word;">Please see the reference at&nbsp;<a href="https://github.com/apple/swift-package-manager/blob/master/Documentation/SystemModules.md" target="_blank">https://github.com/apple/swift-package-manager/blob/master/Documentation/SystemModules.md</a>
<div><br>
</div>
<div>- mish</div>
<div><br>
<div>
<blockquote>
<div>On Dec 7, 2015, at 6:33 PM, Gage Morgan via swift-users &lt;<a href="mailto:swift-users@swift.org">swift-users@swift.org</a>&gt; wrote:</div>
<br class="ecxx_Apple-interchange-newline">
<div>
<div>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.&nbsp;<br>
<br>
<div class="ecxx_acompli_signature">Sent from <a href="http://aka.ms/Ox5hz3" target="_blank">
Outlook</a></div>
<br>
</div>
<img src="https://u2002410.ct.sendgrid.net/wf/open?upn=xTF6JWnt2pl7kNka7081D3VajDoXFZTI5JEuSuQLncpUdQ-2Fw9ccP6Ms6ZCRWxxCNMvcjqMyXkU0xtEyNnPmbbGvau5P1qozRM4wtwri-2FpSE-2FEXZuvlDszaEHYzSaksD893r-2F0sy5YAMh13FZ-2FWZGIN1dOJKBHRj4RWzKT7VB4TiHfQz-2Bi3FZ5dWnGHOoMc8lIsDrxDgXNI1Bp2xBSGaIJ9Xt41Lsoi-2F7pvCk4eQUYxk-3D" alt="" width="1" height="1" border="0" style="height:1px !important;width:1px !important;border-width:0 !important;padding-top:0 !important;padding-bottom:0 !important;padding-right:0 !important;padding-left:0 !important;">
 _______________________________________________<br>
swift-users mailing list<br>
<a href="mailto:swift-users@swift.org">swift-users@swift.org</a><br>
<a href="https://lists.swift.org/mailman/listinfo/swift-users" target="_blank">https://lists.swift.org/mailman/listinfo/swift-users</a><br>
</div>
</blockquote>
</div>
<br>
</div>
</div>
</div>

</div></blockquote></div><br></div></div></div></div>                                               </div></div>                                               </div>
<img src="https://u2002410.ct.sendgrid.net/wf/open?upn=-2FcgwiRAxmHDdptrhrsAJKMBtNqQpWV-2BwUfjpvH9AIaoorpsK8LFFARWkiRJzoTP9W8e6toLNy47RyX6fjDJAeXHXtPUvXHFpLR3VH82Lckr9zbXU5TbaR6EygXpkcDY2sn3VeRkovbVNmOWqXPdPnLMMxD0OrvlXU6dUHG6WZ-2F1QnYql6BzFlyGMgdb95omJQ0OBNb530DVZ4uBAhHUhlM-2BJzNs6KyPlTAaOHwOCdO8-3D" alt="" width="1" height="1" border="0" style="height:1px !important;width:1px !important;border-width:0 !important;padding-top:0 !important;padding-bottom:0 !important;padding-right:0 !important;padding-left:0 !important;">


<br>_______________________________________________
swift-users mailing list
swift-users@swift.org
https://lists.swift.org/mailman/listinfo/swift-users</div>                                               </div></div></div>                                               </div></body>
</html>