У меня есть фиксированная C библиотека в виде файла DLL. Файл DLL имеет некоторые функции безопасности, поэтому я не могу заглянуть в библиотеку. Я знаю только имя функции и тип данных.
Мне нужно дать функции указатель на мою переменную в Python, адрес в памяти. Я пытаюсь использовать ctypes, но это не сработает. Для загрузки библиотеки. я использую ctypes.
Это функция со всеми необходимыми переменными, которые мне нужно запустить.
function (
const unsigned char* input_array,
unsigned int multiply_by,
unsigned char* output_array
);
Итак, я инициализирую свои переменные в Python следующим образом:
input_array = "100"
multiply_by = 5
output_array = "000"
После этого я загружаю свою библиотеку и запускаю функцию.
lib = CDLL('func_lib.dll')
lib.function( hex(id(input_array)),
multiply_by,
hex(id(output_array))
)
Функция не изменит переменную output_array, которая является ее целью. Я вижу, что функция вызывается, потому что не вызывается ошибка. Я правильно обращаюсь с указателями?
РЕДАКТИРОВАТЬ: я упростил функцию до 3 переменных, это было бы то же самое для большего количества. Также я думаю, что input_array является проблемой. Вызванная функция возвращает мне код обратной связи, который говорит, что input_array неверен. Я не знаю, как отправить адрес указателя в функцию.