Python - cdll немедленно завершает работу программы после обновления с Python 2.7 до 3.8 - PullRequest
1 голос
/ 10 апреля 2020

Я нахожусь в процессе обновления проекта с python 2.7 до 3.8, который включал вызов функции из dll. Эта dll была фактически сгенерирована с помощью утилиты codegen MATLAB.

Заголовок функции, показанный в файле .h из утилиты codegen (отредактирован, чтобы скрыть какие-либо детали), заявляет:

extern void example_func(const double inputArray[12], const struct0_T *inputStruct, double
    value1, double value2, double value3, double returnArray[12]);

Now , с Python 2.7 Я смог вызвать эту функцию с помощью следующих шагов:

from ctypes import *

myDll = cdll.LoadLibrary(path_to_my_library)

# initialized values like so:
inputArray = (c_double*12)()
returnArray = (c_double*12)()
value1 = c_double(value) # etc.
# ...
# ...
# later in the code, after making sure all inputs were cast to the correct ctypes
result = []
myDll.example_func(inputArray, inputStruct, value1, value2, value3, returnArray)

for i in range(0, 12):
    result.append(returnArray[i])

Это вернуло бы ожидаемый результат в «результат»

Теперь, когда я пытаюсь и сделать то же самое с python 3.8, я попадаю в точку, где я вызываю myDll.example_func(...), и программа немедленно завершает работу, и я получаю код ошибки: Process finished with exit code -1073741819 (0xC0000005)

DLL - 64 -bit, и я использую 64-битную версию Python 3.8.

Я не уверен, куда отсюда go, будет приветствоваться любое направление или помощь.

...