Pull to refresh

Comments 13

Всё очень хорошо, жаль только что ориентировано только на win. А как обстоит дело с другими платформами, где тоже есть динамически загружаемые библиотеки и python?
На Linux динамические библиотеки называются Shared Objects и имеют расширение so.
Для работы с ними есть модуль dl: docs.python.org/2/library/dl.html
`The dl module has been removed in Python 3. Use the ctypes module instead.` Итого использовать стоит ctypes
Да, статья направлена на win, но это сделано с целью не плодить большого количества одинаковых примеров. В Linux работа модуля ctypes выглядит точно также, только расширение библиотек, как уже написали ниже .so. Просто динамическую библиотеку, если она самописная нужно компилировать для Linux.
str_1 = b«Hello,»
str_2 = b" Habr!"
str_pt = strcat(str_1, str_2)

Куда при этом записывается str_2? Кто ей отвёл память после str_1?
В данном примере показана работы функции из языка С. Внутри себя функция strcat выделяет память под новую строку длинной равной сумме двух входных, а возвращает на нее указатель.
Да, вы правы, я ожидал большего от нее( а она просто вконец первой копирует вторую
Такая функция имеет обязательное имя DllMain

Это не так. Точку входа можно называть как угодно, нужно только совпадение параметров с прототипом.

А ещё есть библиотека CFFI. Она умеет не только в Windows, но и в Linux/Mac.
boberNaPlotine по поводу strcat или любой другой функции, где нужно передать буффер (char* ) в качества параметра можно использовать функцию create_string_buffer(), находится в ctypes
your_buffer = create_string_buffer(your_size) # создаем изменяемый буффер и тем самым выделяем память
Sign up to leave a comment.

Articles