On Wednesday, 13 April 2016 at 19:09:46 UTC, Andre Polykanine wrote: > Hello Chris, > > CvDda> Just to inform you that we successfully use D and vibe.d for two CvDda> things: > > This is just overwhelming! > How do you make bindings to NVDA API which is in Python? > I'm not an NVDA user (I'm using JAWS, if it matters), but I'm still > very interested in the technology. > > > Andre. Hi Andre, What is CvDda>? There are loads of different results in my search engine. To answer your question: in Python you can load DLLs via Python's ctypes. You just load the DLL via `CDLL()` or `cdll.LoadLibrary()`. It's relatively easy to make a Windows DLL in D. To make it accessible for Python's C-types, just expose your functions like so extern (C) { export void myFunction(){} } Of course, any arguments (at least on Windows) or return types should be C-style, i.e. `const char*` instead of `string`. To Python it all looks like C, it doesn't know about D. I've seen a plug-in written in Scheme and it is also loaded via Python's `CDLL()`. To bind a Python function to your DLL just do something like this (assuming you're in a class): // Load self.myDLL = CDLL("path/to/dll") If your function is void, just call it using // call void function in DLL self.myDLL.myFunciton(); If it returns something, you should first define the return value: // assign return type to function in Python self.myDLL.getError.restype = c_char_p To pass arguments, it's best to convert Python to C-types like so: // pass argument as C-type self.myDLL. myFunction(c_ char_p(" text")) It's all in the Python docs at https:// docs.py thon.org/ 2/library/ ctypes.html .