В настоящее время я работаю над проектом, который требует доступа к функциям в DLL, и я нашел ctypes для обработки вызова функции для меня.Однако я сталкиваюсь с некоторыми трудностями, когда некоторые функции запрашивают передачу параметров по ссылке.Я попробовал ctypes.by_ref (), но он не работает, потому что объект является классом, определенным пользователем.
А затем я попытался ctypes.pointer (), и он выплевывает сообщение об ошибке: " тип должен иметь информацию о хранилище".Я думаю, это означает, что он принимает только типы данных ctypes?
Мой код:
from ctypes import *
class myclass():
a= None # requiring c_int32
b= None # requiring c_int32
myci= myclass()
myci.a= c_int32(255)
myci.b= c_int32(0)
mycip= pointer(myci) # let's say it's Line 8 here
loadso= cdll.LoadLibrary(mydll)
Result= loadso.thefunction (mycip) # int thefunction(ref myclass)
И вывод терминала:
Line 8: TypeError: _type_ must have storage info
Я хотел бы знать 1)что означает это сообщение об ошибке?и 2) способ обойти и передать определенный пользователем класс по ссылке на внешнюю DLL.
Заранее благодарим вас за потраченное время.