| by Arround The Web | No comments

How to Call a C function in Python

Python and C are popular programming languages allowing users to build several mobile and web-based applications. However, these programming languages require different environments and packages to run on your system. But they can be integrated, especially calling a C function in Python.

If you are unsure whether it can be possible to call a C function in Python, follow this article’s guidelines for further help.

Call a C Function in Python

Calling a C function in Python is a matter of simple steps discussed below:

Step 1: First, create a C file on any system. I am creating the file on a Linux system using the following command:

nano mycode.c

Step 2: Inside the file, add the following function.

int mycode(int numb)

{

    if (numb == 0)

 

        // Do not perform any operation if number is 0.

        return 0;

    else

        // Return 1 else return 0 if number is power of 2

        return ((numb & (numb - 1)) == 0 ? 1 : 0) ;

 

}

Note: You can add any C function you want inside the file.

Step 3: Now, you must generate a shared library “libfun.so” of the file using the following command:

cc -fPIC -shared -o libfun.so mycode.c

This generates the “libfun.so” shared library on the system.

ctypes is a Python library that allows users to call a C function inside a Python program. To use this library, the users must import it at the start of the Python program.

Step 4: Let’s create a Python file using nano editor in Linux from the following command:

nano myfile.py

Step 5: Inside the file, add the following code:

import ctypes

Num= 16

# libfun loads the python file

# via fun.mycode(),

# Access the C function

fun = ctypes.CDLL("location of libfun.so") # Or full path to file

# ctypes will check it whenever an argument is passed

 

fun.mycode.argtypes = [ctypes.c_int]

 

# Call the function using instant (fun)

# return the value by function in C

# code

returnVale = fun.mycode(Num)

Note: Ensure replacing “mycode()” with your function name and the location of libfun.so file.

Step 6: Save the file using “CTRL+X”, add “Y” and enter to exit.

Step 7: Execute the Python code to confirm its successful compilation on the system.

python3 myfile.py

In this way, you can call a C function in Python on any system by following the above-given steps.

Conclusion

Calling a C function inside the Python program can be done easily by first creating a C function inside a file with a .c extension. Then compile the file to generate a shared library after that, import “ctypes” library in a Python program and use the shared library inside the code to call a function in Python on any system.

Share Button

Source: linuxhint.com

Leave a Reply