Mon ordinateur est en 64 bits. J’ai une extension pour QGIS qui contient une DLL ‘libmgrs.dll’. Quand je tente d’instraller ce plugin, j’ai une erreur qui s’affiche “WindowsError: [Error 193] %1 n’est pas une application Win32 valide”. La ligne incriminée contient l’exploitation de cette dll. Que dois-je faire pour que cela fonctionne?
]]>>>> import ctypes
>>> data = [1, 2, 3]
>>> # création d'un array d'int de taille 3
>>> TypeArray = ctypes.c_int * len(data)
>>> array = TypeArray(*data)
>>> array
<__main__ .c_int_Array_3 object at 0x7ff84f9f3e18>
>>> array[0]
1
]]>J’aimerais comprend comme passer une liste d’int() python a ma fonction C.
en C
maFonction (int **buffer1, int **buffer2, int *size){}
appel python
maLib.maFonction(self.buffer1, self.buffer2, self.size)
Msg d’erreur python
Traceback (most recent call last): File "monFichier.py", line 37 maLib.maFonction(self.buff1, self.buff2, c_int(self.size)) ctypes.ArgumentError: argument 1: : Don't know how to convert parameter 1
Merci par avance :)
]]>tout d’abord je tiens a vous remercier pour cet EXCELENT tuto ! simple, et tres bien expliqué !
J’ai crée une DLL qui fonctionne. je l’ai tester avec un autre programme en C, et il arrive bien à utiliser les fonction de cette DLL.
Néanmoins cela ne fonctionne pas lors de l’interfaçage avec python…
toutes vos étapes fonctionnent jusqu’à ce que j’éssaie d’utiliser une fonction de la dll :
res = zelib.addition(2, 3)
me renvoie : AttibuteError: function ‘multiplier’ not found
Auriez-vous une solution ? car cela fait plusieurs jours que je n’en trouve pas… (j’ai tenté de jeter un oeil à la doc python mais sans résultats…) ^^’
Je vous en serais infiniment reconnaissant si vous pouviez m’aider.
cordialement.
]]>(D’ailleurs, je suis en train de commencer à tester Cython, c’est vraiment sympa, tu fais la même chose qu’en C en plus sûr et en 3 fois moins de lignes, mais ça manque un poil de doc pour le moment…)
]]>