OSError: exception: access violation reading 0x0000000100000010

Я получаю OSError: exception: access violation reading, когда пытаюсь использовать библиотеку, написанную на c++ из python, код на python выглядит так:

self.normalizer = CDLL('engine/nav/cpp/bin/lib.dll')
lst_obj = (ctypes.c_int * len(list(range(15))))
lst = lst_obj()
lst[:] = [c_int(i) for i in list(range(15))]
self.normalizer.argtypes = [c_int, lst_obj]
self.normalizer.restype = c_int
print(self.normalizer.find_vlue(ctypes.c_int(5), lst))

lib.cpp:

#include <iostream>
#include <list>

extern "C" int find_vlue(int value, std::list<int>find){
    int maximum = 0;

    for (int element: find){
        if (element<=value){
            maximum = element;
        }

    }

    //std::cout<<maximum;
    return maximum;

}

Полная трассировка:

Traceback (most recent call last):
  File "C:\Users\Ivan\Desktop\lma game\main.py", line 30, in <module>
    nav_system = Navigator(level1)
  File "C:\Users\Ivan\Desktop\lma game\engine\nav\navigator_core.py", line 34, in __init__
    print(self.normalizer.find_vlue(ctypes.c_int(5), lst))
OSError: exception: access violation reading 0x0000000100000010

Компиляция прошла без ошибок:

PS C:\Users\Ivan\Desktop\lma game\engine\nav\cpp\sources> gcc .\lib.cpp -shared -o lib.dll -lstdc++
PS C:\Users\Ivan\Desktop\lma game\engine\nav\cpp\sources>

Я нашел это, но ничего из этого мне на помогло: https://qna.habr.com/q/1242560 https://stackoverflow.com/questions/54360555/python-ctypes-oserror-exception-access-violation-reading-0x00000000 Exception: access violation reading при вызове функции С из Python

Я читал оф. документацию ctypes, но она тоже мне ничем не помогла. Почему может возникать эта ошибка?


Ответы (1 шт):

Автор решения: Никита Самоуков

std::list из питона не создать. Нужно сишные типы использовать.

→ Ссылка