I would like to implement C # code in the critical part of my python program to make it faster. It says (according to Python documentation and this site ) that you can download a dynamic link library (and PyDocs, so to speak) as follows:
cdll.LoadLibrary("your-dll-goes-here.dll")
This is the part of my code that performs this function:
from ctypes import * z = [0.0,0.0] c = [LEFT+x*(RIGHT-LEFT)/self.size, UP+y*(DOWN-UP)/self.size] M = 2.0 iterator = cdll.LoadLibrary("RECERCATOOLS.dll") array_result = iterator.Program.ITERATE(z[0],z[1],c[0],c[1],self.iterations,M) z = complex(array_result[0],array_result[1]) c = complex(array_result[2],array_result[3]) last_iteration = int(round(array_result[4]))
And the RECERCATOOLS.dll I'm using is this (C # code, not C or C ++):
using System; using System.Collections.Generic; using System.Linq; using System.Text; using KarlsTools; public class Program { public static Array ITERATE(double z_r,double z_i,double c_r, double c_i, int iterations, double limit) { Complex z = new Complex(z_r, z_i); Complex c = new Complex(c_r, c_i); for (double i = 1; Math.Round(i) <= iterations; i++) { z = Complex.Pow(z, 2) + c; if (Complex.Abs(z) < limit) { double[] numbers = new double[] { Complex.Real(z), Complex.Imag(z), Complex.Real(c), Complex.Imag(c), i}; return numbers; } } double iter = iterations; double[] result = new double[] { Complex.Real(z), Complex.Imag(z), Complex.Real(c), Complex.Imag(c), iter}; return result; } }
To create this DLL, I use the Build command on the Visual Studio 2010 project, which contains only this file and a link to Karlstools, a module that allows me to use complex numbers.
I don't know why, but when I try to run my Python code, it just throws an exception:
[...] array_result = iterator.Program.ITERATE(z[0],z[1],c[0],c[1],self.iterations,M) File "C:\Python32\lib\ctypes\__init__.py", line 353, in __getattr__ func = self.__getitem__(name) File "C:\Python32\lib\ctypes\__init__.py", line 358, in __getitem__ func = self._FuncPtr((name_or_ordinal, self)) AttributeError: function 'Program' not found
I need help with this, as it continues to throw me exceptions, even if everything is set to public and the function is static , or even if I try to access the function directly without specifying the "Program" class ... I donโt know where problem.