Therefore, I use python to call methods in the C ++ shared library. I have a problem with returning a double from C ++ in python. I have a toy example that shows a problem. Feel free to compile and try it out.
Here is the python code (soexample.py):
# Python imports from ctypes import CDLL import numpy as np
Here is C ++ (soexample.cpp):
#include <iostream> using namespace std; class CPPClass { public: CPPClass(){} void func(double& x) { x = 1.0; } }; // For use with python: extern "C" { CPPClass* CPPClass_py(){ return new CPPClass(); } double func_py(CPPClass* myClass) { double x; myClass->func(x); return x; } }
Compile with:
g++ -fPIC -Wall -Wextra -shared -o libsoexample.so soexample.cpp
When I run, I get:
$ python soexample.py x = 0
So, the result is an integer in the type and a value of 0. What happens?
I am also interested in learning about filling arrays by reference.
source share