Zajímavé téma, dík za článek.
K ctypes: Na základě čeho předpokládá, že funkce má dva parametry typu int a spadne na příliš velkém argumentu?
U té druhé: Dají se ty hlavičky pro python nějak vygenerovat? int je jednoduchý, ale v případě složitějších typedef to může být náchylné na chyby či problémy s multiplatformností.
ctypes nemá žádné informace o tom, jakého typu mají být parametry. Proto jen předpokládá mapování mezi typy Pythonu a typy v céčku. V praxi to znamená, že vše bude na současných architekturách funkční pro malé inty v Pythonu, pro float, a pro řetězce (a do intů se pochopitelně řadí i True/False).
U ostatných typů parametrů dojde v nejlepším případě k běhové chybě (jak je ukázáno), v horším případě k předání "divné" hodnoty a v nejhorším případě bude vše jakoby funkční, ale v praxi se poruší zásobník (například pokud je funkce volána často nebo v určitém pořadí). I z tohoto důvodu není ctypes (podle mého názoru) vhodné řešení.