Using C codes in Python | Set 2

Prerequisite: Using C codes in Python | Set 1

In the previous article, we have discussed how to access C code in Python. Now, let’s see how to access C functions.

Code #1 : Accessing C functions with Python



filter_none

edit
close

play_arrow

link
brightness_4
code

import work
  
print ("GCD : ", work.gcd(35, 42))
  
print ("\ndivide : ", work.divide(42, 8))
  
print ("\navg : ", work.avg([1, 2, 3]))
  
p1 = work.Point(1, 2)
p2 = work.Point(4, 5)
print ("\ndistance : ", work.distance(p1, p2))

chevron_right


Output :

GCD : 7

divide : (5, 2)

avg : 2.0

distance : 4.242640687119285

 
Issue ?
Now the work done above has an issue that for the overall packaging of C and Python code together, using ctypes to access C code that has been compiled, one has to make sure that the shared library gets placed in a location, where the work.py module can find it. One possibility is to put the resulting libsample.so file in the same directory as the supporting Python code.

So, if the C library is installed elsewhere, then path has to be adjusted accordingly. If it is installed as a standard library on the machine, then ctypes.util.find_library() function can be used.

Code #2 : Path Example

filter_none

edit
close

play_arrow

link
brightness_4
code

from ctypes.util import find_library
  
find_library('m')
  
find_library('pthread')
  
find_library('sample')

chevron_right


Output :

/usr/lib/libm.dylib

/usr/lib/libpthread.dylib

/usr/local/lib/libsample.so

Again, ctypes won’t work at all if it can’t locate the library with the C code. ctypes.cdll.LoadLibrary() is used to load the C library, once it’s location is known.

filter_none

edit
close

play_arrow

link
brightness_4
code

_mod = ctypes.cdll.LoadLibrary(_path)

chevron_right




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.