Does this have any downside? I have noticed that printf("HI") in my .DLL; doesn't really print anything. I am on windows.
cdll.LoadLibrary('helloworld.dll') My next question is that I need to return an array or a list of address or int or some type of data, but if I returned a pointer to the array of some data type, how does the python cope with it? For instance, my plan is to have 3 functions: 1) a function that return all addresses that have a given value to python, say, 9001 2) then I do something with python so that values change, the target value is now 1009. 3) a second function that takes all the addresses as input and then return adddress that have values of 1009. 4) repeat 2 and 3 until there is only 1 or so of address which correct values. 5) A 3rd function that takes only 1 address and simply return the values at that address. So the whole point of having 1-4 is to find the one address that contain that values I want, and then all I do is to call the 3rd function to find the values at that address. So basically what I need to know is if the method I am using, cdll.LoadLibrary('helloworld.dll') is proper or I need some other method, and then I would like to find out how to handle the data returned. (address) Thanks!!! On Sun, May 6, 2018 at 5:44 AM, Stefan Behnel <stefan...@behnel.de> wrote: > Hi, > > Brad M schrieb am 04.05.2018 um 11:30: > > I want to create a C-based memory scanner for Python, and so far this is > > how I do it: > > > > Python: > > > > from ctypes import cdll > > mydll = cdll.LoadLibrary('hello.dll') > > print(mydll.say_something()) > > > > and hello.dll: > > > > #include <stdio.h> > > __declspec(dllexport) int say_something() > > { > > return 1980; > > } > > > > so the printout is "1980" > > > > Is this alright? > > > Depends on your needs and your C/C++ knowledge. > > If you have a shared library that provides the ready-made functionality, > and accessing that native code at all is more important than calling it > very quickly (e.g. you only do a few longish-running calls into it), then > wrapping a shared library with ctypes (or preferably cffi) is a good way to > do it. > > Otherwise, try either a native wrapper generator like pybind11, or write > your wrapper in Cython. > > Specifically, if you are not just calling into an external library 1:1, but > need to do (or can benefit from doing) non-trivial operations in native > code, definitely use Cython. > > http://cython.org > > > > I am aware that there is another much more complicated > > method such as this: > > > > https://tutorialedge.net/python/python-c-extensions- > tutorial/#building-and-installing-our-module > > Well, yes, it exists, but I advise against wrapping C code manually that > way. It's just too cumbersome and error prone. Leave it to the experts who > have already written their tools for you. > > Stefan > > > Disclosure: I'm a Cython core dev, so I'm biased and I absolutely know what > I'm talking about. > > _______________________________________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > https://mail.python.org/mailman/listinfo/tutor > _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor