Thursday, January 22, 2026
HomeLanguagesHow to call C / C++ from Python?

How to call C / C++ from Python?

In order to take advantage of the strength of both languages, developers use Python bindings which allows them to call C/C++ libraries from python.

Now, the question arises that why there is a need for doing this?

  1. As we know that, C has faster execution speed and to overcome the limitation of Global Interpreter Lock(GIL) in python, python bindings are helpful.
  2. We have a large, stable and tested library in C/C++, which will be advantageous to use.
  3. For performing large scale testing of the systems using Python test tools.

Let’s see the C code which we want to execute with Python :

C++




#include <iostream>
class Geek{
    public:
        void myFunction(){
            std::cout << "Hello Geek!!!" << std::endl;
        }
};
int main()
{
    // Creating an object
    Geek t; 
  
    // Calling function
    t.myFunction();  
   
    return 0;
}


We have to provide those cpp declarations as extern “C” because ctypes can only interact with C functions.

C++




extern "C" {
    Geek* Geek_new(){ return new Geek(); }
    void Geek_myFunction(Geek* geek){ geek -> myFunction(); }
}


Now, compile this code to the shared library :

Finally, write the python wrapper:

Python3




# import the module
from ctypes import cdll
  
# load the library
lib = cdll.LoadLibrary('./libgeek.so')
  
# create a Geek class
class Geek(object):
  
    # constructor
    def __init__(self):
  
        # attribute
        self.obj = lib.Geek_new()
  
    # define method
    def myFunction(self):
        lib.Geek_myFunction(self.obj)
  
# create a Geek class object
f = Geek()
  
# object method calling
f.myFunction()


Output :

Hello Geek!!!
RELATED ARTICLES

Most Popular

Dominic
32475 POSTS0 COMMENTS
Milvus
119 POSTS0 COMMENTS
Nango Kala
6847 POSTS0 COMMENTS
Nicole Veronica
11977 POSTS0 COMMENTS
Nokonwaba Nkukhwana
12064 POSTS0 COMMENTS
Shaida Kate Naidoo
6986 POSTS0 COMMENTS
Ted Musemwa
7220 POSTS0 COMMENTS
Thapelo Manthata
6933 POSTS0 COMMENTS
Umr Jansen
6912 POSTS0 COMMENTS