Calling dll in python 3 with LPSTR -


i have .dll named my.dll, 4 functions, called in python 3.5 using:
mydll = ctypes.cdll.loadlibrary(path:\to\my.dll)

my problem calling function has lpstr:

#include "stdafx.h" #include "newheader.h"     double  _stdcall pain_function(double arg1, double arg2, lpstr arg_string_with_spaces) 

the other 3 calls my.dll work fine.

below code tried pain_function:

import ctypes ctypes import wintypes  # load dll mydll = ctypes.windll(path:\to\my.dll)  # call function  pain_function = mydll.pain_function  # typecast arguments pain_function.argtypes = [ctypes.c_double, ctypes.c_double, wintypes.lpstr]  # typecast return pain_function.restype = ctypes.c_double   pain_return = pain_function(arg1, arg2, some_string) 

pain_return returns nonsensical number. tried variations, along lines of:

some_string = ctypes.create_string_buffer(b' ' * 200) 

i have looked here among other places:

  1. python-ctypes-prototype-with-lpcstr-out-parameter

  2. using string parameters in dll function calls

what correct way pass string of 200 spaces dll?

thank in advance

you indicated prototype was:

double  _stdcall pain_function(double arg1, double arg2, lpstr arg_string_with_spaces) 

but using:

mydll = ctypes.cdll.loadlibrary(path:\to\my.dll) 

it should be, __stdcall calling convention:

mydll = ctypes.windll('path:\to\my.dll') 

Comments

Popular posts from this blog

html - Styling progress bar with inline style -

java - Oracle Sql developer error: could not install some modules -

How to use autoclose brackets in Jupyter notebook? -