Форум сайта python.su
0
Добрый день!
Нужна помощь по обращению к DLL-ке через python.
В Dll функция возведения в квадрат массива double.
Код TestsExDLL.h:
#include “extcode.h”
#ifdef __cplusplus
extern “C” {
#endif
typedef struct {
int32_t dimSize;
double elt;
} DoubleArrayBase;
typedef DoubleArrayBase **DoubleArray;
/*!
* TestsExDLL
*/
void __cdecl TestsExDLL(DoubleArray *ArrayIn, DoubleArray *ArrayOut);
MgErr __cdecl LVDLLStatus(char *errStr, int errStrLen, void *module);
/*
* Memory Allocation/Resize/Deallocation APIs for type ‘DoubleArray’
*/
DoubleArray __cdecl AllocateDoubleArray (int32 elmtCount);
MgErr __cdecl ResizeDoubleArray (DoubleArray *hdlPtr, int32 elmtCount);
MgErr __cdecl DeAllocateDoubleArray (DoubleArray *hdlPtr);
void __cdecl SetExecuteVIsInPrivateExecutionSystem(Bool32 value);
#ifdef __cplusplus
} // extern “C”
#endif
Код обращения к dll в Pуthon:
import ctypes
newlib = ctypes.CDLL(r'C:\\Users\\Admin\\Desktop\\IS2_Ex\\UPD16337\\TestsEXDLL.dll')
inputdata =
output =
pinputdata = (ctypes.c_double * len(inputdata))(* inputdata)
poutputdata = (ctypes.c_double * len(inputdata))(* output)
newlib.TestsExDLL.restype = ctypes.c_void_p
newlib.TestsExDLL.argtypes =
newlib.TestsExDLL(pinputdata, poutputdata)
После выполнения кода выдает следующую ошибку:
newlib.TestsExDLL(pinputdata, poutputdata)
OSError: exception: access violation reading 0xFFFFFFFFFFFFFFFF
Dll создавалась средствами Labview. После создания проверялась на работоспособность в Labview. Проблем с выводом результата в labview - нет. Помогите разобраться в чем кроется ошибка (переполнение при чтении?).
Офлайн
44
.
и вставьте ссылку на его url Офлайн