Calling routines in Windows DLLs from Python scripts running under Linux, MacOS or BSD
zugbruecke is an EXPERIMENTAL Python module (currently in development status 3/alpha). It allows to call routines in Windows DLLs from Python code running on Unices / Unix-like systems such as Linux, MacOS or BSD. zugbruecke is designed as a drop-in replacement for Python’s standard library’s ctypes module. zugbruecke is built on top of Wine. A stand-alone Windows Python interpreter launched in the background is used to execute the called DLL routines. Communication between the Unix-side and the Windows/Wine-side is based on Python’s build-in multiprocessing connection capability. zugbruecke has (limited) support for pointers and struct types. zugbruecke comes with extensive logging features allowing to debug problems associated with both itself and with Wine. zugbruecke is written using Python 3 syntax and primarily targets the CPython implementation of Python.
About Wine (from winehq.org): Wine (originally an acronym for “Wine Is Not an Emulator”) is a compatibility layer capable of running Windows applications on several POSIX-compliant operating systems, such as Linux, MacOS and BSD. Instead of simulating internal Windows logic like a virtual machine or emulator, Wine translates Windows API calls into POSIX calls on-the-fly, eliminating the performance and memory penalties of other methods and allowing you to cleanly integrate Windows applications into your desktop.
This project is NEITHER associated NOR affiliated in any way or form with the Wine project.
master / release
pip install zugbruecke
pip install git+https://github.com/pleiszenburg/zugbruecke.git@develop
Start an interactive Python session under Unix and try the following:
from zugbruecke import cdll, c_double dll_pow = cdll.msvcrt.pow dll_pow.argtypes = (c_double, c_double) dll_pow.restype = c_double print('You should expect "1024.0" to show up here: "%.1f".' % dll_pow(2.0, 10.0))
A lot of code, which was written with ctypes’ cdll, windll or oledll in mind and which runs under Windows, should run just fine with zugbruecke on Unix (assuming it does not use Windows features not supported by Wine).
zugbruecke performs reasonably well given its complexity with less than 0.2 µs overhead per call in average on modern hardware. It is not (yet) optimized for speed. Check the latest benchmarks for more details.
zugbruecke is notoriously insecure. Never, ever, run it with root / super users privileges! Do not use it where security matters! For details, check the section on security in the documentation.
Feel free to post questions in the GitHub issue tracker of this project.
Bugs & issues
- Report bugs in zugbruecke here: GitHub issue tracker
- Report bugs in ctypes here: Python tracker
- Report bug in Wine here: WineHQ Bug Tracking System
Make sure you have read the chapter on bugs in zugbruecke’s documentation.
For production environments
DO NOT run this code (as-is) in production environments unless you feel that you really know what you are doing or unless you are absolutely desperate! Being experimental in nature and of alpha quality, it is prone to fail in a number of unpredictable ways, some of which might not be obvious or might not even show any (intermediately) recognizable symptoms at all! You might end up with plain wrong, nonsensical results without noticing it!
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
|Filename, Size & Hash SHA256 Hash Help||File Type||Python Version||Upload Date|
(65.2 kB) Copy SHA256 Hash SHA256
|Wheel||py3||Dec 6, 2017|
(33.6 kB) Copy SHA256 Hash SHA256
|Source||None||Dec 6, 2017|