Matlab runtime initialization from Python using ctypes

4 views (last 30 days)
Hello,
I am trying to use a c dll that is created with Matlab Compiler SDK from python using the ctypes module.
The first step is to call the mclInitializeApplication function but that fails.
Here is a python snippet:
import ctypes
mclbase_dll = ctypes.cdll.LoadLibrary('mclbase.dll')
mclInitializeApplication = mclbase_dll.mclInitializeApplication
clInitializeApplication.argtypes = [ctypes.POINTER(ctypes.c_char_p),ctypes.c_size_t]
clInitializeApplication.restype = ctypes.c_bool
ptr = ctypes.c_char_p()
b = mclInitializeApplication(ctypes.byref(ptr),0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
OSError: [WinError -529697949] Windows Error 0xe06d7363
Is this possible at all to use matlab runtime from python using ctypes or I am doing something wrong here?
Thank you
  2 Comments
Shubham Kashyap
Shubham Kashyap on 8 Apr 2020
The genearted .dll from C/C++ will not work with python. But Matlab compiler SDK have a python target. I recommend using that to call python.
>>web(fullfile(docroot, 'compiler_sdk/python_packages.html'))
The generated .dll don't have native C interface. For this to work you need to create a wrapper around the actual .dll. Refer here.
Alexandros Kessanopoulos
Alexandros Kessanopoulos on 8 Apr 2020
Thanks for the comment. I have done this procedure and created the wrapper so from python I intend to call the wrapper function/dll which has a native api and not the matlab compiler sdk generated one.
If you notice my snippet above the python call (using ctypes) fails at the application initialization itself where function's api is native C and not at the function call.

Sign in to comment.

Answers (0)

Products


Release

R2018b

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!