Darren Blaser <[EMAIL PROTECTED]> writes: > Hi, > > I have a dll that I'd like to write a simple replacement for in python. > Is this possible? Is there an example somewhere of a dll written in python? > > The example could be for something as simple as a single dll export > implementing the following GetApiVersion call... > > typedef enum _Status > { > STATUS_SUCCESS = 0x00000000, > STATUS_FAILED = 0x00000001 > }Status; > > typedef struct _ApiVersionInfo > { > DWORD dwMajor; > DWORD dwMinor; > DWORD dwDetailed > }ApiVersionInfo; > > Status GetApiVersion(ApiVersionInfo *pstVersion); > > My googling turned up this old post from 5 years ago, but nothing more > recent. > http://mail.python.org/pipermail/python-list/2001-November/074600.html > > Thank you very much for any feedback.
In principle this is not complicated. Write the dll as usual, and call Python from the exported functions. Just make sure that you initialize Python somewhere, and be sure to handle the GIL correctly. It gets more complicated when the exe-process may also be using Python, or if other dlls used in the same process are also using Python (maybe because inproc COM objects are implemented in Python). Then you must be prepared to handle the case that Python already *is* initialized. The next step would be if you want to use py2exe or a similar tool to distribute your dll to machines that don't have Python installed (if you need that). But, of course there is prior art: pywin32, for example, has a ISAPI extension (which is a dll): http://cvs.sourceforge.net/viewcvs.py/pywin32/pywin32/isapi/src/pyISAPI.cpp?rev=1.2&view=auto And pywin32's pythoncom, which is the inproc COM server dll. Thomas _______________________________________________ Python-win32 mailing list Python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32