Skip to content
Related Articles

Related Articles

Improve Article

Using C codes in Python | Set 2

  • Last Updated : 18 Mar, 2019

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.

 Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.  

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course. And to begin with your Machine Learning Journey, join the Machine Learning - Basic Level Course

Code #1 : Accessing C functions with Python






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))

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




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

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.




_mod = ctypes.cdll.LoadLibrary(_path)



My Personal Notes arrow_drop_up
Recommended Articles
Page :