Open In App

Using C codes in Python | Set 2

Last Updated : 18 Mar, 2019
Improve
Improve
Like Article
Like
Save
Share
Report

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




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)




Like Article
Suggest improvement
Previous
Next
Share your thoughts in the comments

Similar Reads