Calling C Functions from Python

Filed Under: Python

We can call a C function from Python program using the ctypes module.

Calling C Function from Python

It involves the following steps:

  1. Creating a C file (.c extension) with the required functions
  2. Creating a shared library file (.so extension) using the C compiler.
  3. In the Python program, create a ctypes.CDLL instance from the shared file.
  4. Finally, call the C function using the format {CDLL_instance}.{function_name}({function_parameters}).

Step 1: Creating a C File with some functions

#include <stdio.h>

int square(int i) {
	return i * i;

We have a simple C function that will return the square of an integer. I have saved this function code in the file named my_functions.c.

Step 2: Creating the Shared Library File

We can use the following command to create the shared library file from the C source file.

$ cc -fPIC -shared -o my_functions.c
C File Shared Library File

C File and Shared Library File

Step 3: Calling C Function from Python Program

>>> from ctypes import *
>>> so_file = "/Users/pankaj/"
>>> my_functions = CDLL(so_file)
>>> print(type(my_functions))
<class 'ctypes.CDLL'>
>>> print(my_functions.square(10))
>>> print(my_functions.square(8))
Calling C Function From Python

Calling C Function From Python

If you change the C program file, you will have to regenerate the shared library file.


The python default implementation is written in C programming and it’s called CPython. So it’s not very uncommon to use C functions in a python program. In this tutorial, we learned how to easily call C functions in a python program.


  1. Jean Baptiste says:

    is it possible to connect EM-18 RFID Reader to raspberry pi direct without using RS232 USB adapter? Help me please Sir.

  2. Keerthana says:

    how can i run cmake commands using python.
    Eg: I have a folder with .c files in it and they are linked using CMakeList.txt
    I do compile them using “cmake -H. -Bbuild” commands
    I need to put the above command in python script and run the .py directly to build the c files.can anyone help me

  3. Manomugdha Biswas says:

    Hi Pankaj,
    Is it possible to call functions in Linux c executable (not . so file) from python?

Leave a Reply

Your email address will not be published. Required fields are marked *

Generic selectors
Exact matches only
Search in title
Search in content
Search in posts
Search in pages