Я получаю эту ошибку от PyCharm:
WindowsError: исключение: чтение нарушения доступа 0x000000504D414C43
Это происходит только в Пичарме. Когда я запускаю скрипт python из Windows Powershell, он говорит WindowsError: [Ошибка 193]% 1 не является допустимым приложением Win32 . Я проверил отладчик, и значение передается, но оно выдает ошибки, иногда дает мне нулевые указатели. Сначала мне показалось, что я запускаю массив, но даже если я просто верну 7 (как вы видите внизу) и закомментирую весь код, он все равно будет работать, как описано.
Вопросы:
1) Есть ли у вас какие-либо решения?
2) Правильно ли я настроил DLL?
3) Есть предложения?
Большое спасибо за вашу помощь.
Вот мой код C ++:
#include <iostream>
#include <string>
#include <array>
#include "external_lists.h"
extern creation_object A1[];
extern creation_object A2[];
extern int A1size;
extern int A2size;
#define DLLEXPORT extern "C" __declspec(dllexport)
DLLEXPORT int get_creation_data(std::string needed_name){
int A1_size = ( A1size/ sizeof(A1[0])) ;
int A2_size = ( A2size / sizeof(A2[0])) ;
for (int i = 0; i < A1_size; i++) {
if (A1[i].name == needed_name)
{
return A1[i].value->section;
}
}
return 7;
}
Вот моя оболочка Python:
import os, sys, re
from ctypes import *
def get_creation_values(value_name):
trimdll = CDLL('C:\\Documents\\creation.dll')
return valuedll.get_creation_data(value_name)
if __name__ == "__main__":
val = get_value('CLAMP')
print(val)
Общая цель:
У меня есть большой файл, который я не могу изменить, но мне нужен доступ в C ++. В файле C ++ есть большие списки, и мне нужно перебирать эти списки и возвращать значение скрипту Python.