Skip to content Skip to sidebar Skip to footer

How Can I Call A Dll From A Scripting Language?

I have a third-party product, a terminal emulator, which provides a DLL that can be linked to a C program to basically automate the driving of this product (send keystrokes, detect

Solution 1:

One way to call C libraries from Python is to use ctypes:

>>>from ctypes import *>>>windll.user32.MessageBoxA(None, "Hello world", "ctypes", 0);

Solution 2:

In Perl, Win32::API is an easy way to some interfacing to DLLs. There is also Inline::C, if you have access to a compiler and the windows headers.

Perl XSUBs can also create an interface between Perl and C.

Solution 3:

In Perl, P5NCI will also do that, at least in some cases. But it seems to me that anything you use that directly manages interfacing with the dll is going to be user-unfriendly, and if you are going to have a user (scriptor?) friendly wrapper, it might as well be an XS module.

I guess I don't see a meaningful distinction between "compile and send out executables" and "compile and send out scripts".

Solution 4:

For Python, you could compile an extension which links to the DLL, so that in Python you could just import it like a normal module. You could do this by hand, by using a library like Boost.Python, or by using a tool such as SWIG (which also supports Perl and other scripting languages) to generate a wrapper automatically.

Solution 5:

The Python Py_InitModule API function allows you to create a module from c/c++ functions which can then be call from Python.

It takes about a dozen or so lines of c/c++ code to achieve but it is pretty easy code to write:

https://python.readthedocs.org/en/v2.7.2/extending/extending.html#the-module-s-method-table-and-initialization-function

The Zeus editor that I wrote, uses this appoach to allow Zeus macros to be written in Python and it works very well.

Post a Comment for "How Can I Call A Dll From A Scripting Language?"