Comments 13
Всё очень хорошо, жаль только что ориентировано только на win. А как обстоит дело с другими платформами, где тоже есть динамически загружаемые библиотеки и python?
+1
На Linux динамические библиотеки называются Shared Objects и имеют расширение so.
Для работы с ними есть модуль dl: docs.python.org/2/library/dl.html
Для работы с ними есть модуль dl: docs.python.org/2/library/dl.html
+2
ctypes также вполне может работать с библиотеками so без проблем.
C/C++ из Python (ctypes)
C/C++ из Python (ctypes)
+3
`The dl module has been removed in Python 3. Use the ctypes module instead.` Итого использовать стоит ctypes
+1
Да, статья направлена на win, но это сделано с целью не плодить большого количества одинаковых примеров. В Linux работа модуля ctypes выглядит точно также, только расширение библиотек, как уже написали ниже .so. Просто динамическую библиотеку, если она самописная нужно компилировать для Linux.
0
str_1 = b«Hello,»
str_2 = b" Habr!"
str_pt = strcat(str_1, str_2)
Куда при этом записывается str_2? Кто ей отвёл память после str_1?
+1
В данном примере показана работы функции из языка С. Внутри себя функция strcat выделяет память под новую строку длинной равной сумме двух входных, а возвращает на нее указатель.
-4
strcat ничего не выделяет.
http://www.cplusplus.com/reference/cstring/strcat/
+2
Такая функция имеет обязательное имя DllMain
Это не так. Точку входа можно называть как угодно, нужно только совпадение параметров с прототипом.
+1
boberNaPlotine по поводу strcat или любой другой функции, где нужно передать буффер (char* ) в качества параметра можно использовать функцию create_string_buffer(), находится в ctypes
your_buffer = create_string_buffer(your_size) # создаем изменяемый буффер и тем самым выделяем память
0
А вот с такой DLL я могу работать в питоне?
https://rivatuner.doomdealer.com/afterburner/MSIAfterburner.NET/
0
Sign up to leave a comment.
DLL & Python