Uso Ctype en mi proyecto Django pero cuando uso este método:
def requete_smartphone(self, bande, debut_a, debut_m, debut_j, fin_a, fin_m, fin_j, sens, fvitesse, fstat, affmes, min, max, moyenne, ecart, algofusion, s_route, vitesse, s_capteurs, s_typeveh, s_marque, s_modele, s_immatriculation, s_pseudo, ecart_moyenne, nombre): """ Permet de faire la requete smarphone avec tout les paramètre qu'elle demande Paramètres : Les même que pour la DLL, suivre ce qui est écrit sur la fiche de la DLL Renvoie """ bande = str.encode(bande) debut_a = int(debut_a) debut_m = int(debut_m) debut_j = int(debut_j) fin_a = int(fin_a) fin_m = int(fin_m) fin_j = int(fin_j) sens = str.encode(sens) fvitesse = str.encode(fvitesse) fstat = str.encode(fstat) affmes = str.encode(affmes) min = str.encode(min) max = str.encode(max) moyenne = str.encode(moyenne) ecart = str.encode(ecart) algofusion = str.encode(algofusion) s_route = str.encode(s_route) vitesse = float(vitesse) s_capteurs = str.encode(s_capteurs) s_typeveh = str.encode(s_typeveh) s_marque = str.encode(s_marque) s_modele = str.encode(s_modele) s_immatriculation = str.encode(s_immatriculation) s_pseudo = str.encode(s_pseudo) ecart_moyenne = float(ecart_moyenne) nombre = str.encode(nombre) print("c1") DLLFunction = self.libraryBase.requete_smartphone print("c2") DLLFunction.argtypes = [c_char, c_int, c_int, c_int, c_int, c_int, c_int, c_char, c_char, c_char, c_char, c_char, c_char, c_char, c_char, c_char, c_char_p, c_float, c_char_p, c_char_p, c_char_p, c_char_p, c_char_p, c_char_p, c_float, c_char] print("c3") DLLFunction.restype = c_bool print("c4") resultFunction = DLLFunction(bande, debut_a, debut_m, debut_j, fin_a, fin_m, fin_j, sens, fvitesse, fstat, affmes, min, max, moyenne, ecart, algofusion, s_route, vitesse, s_capteurs, s_typeveh, s_marque, s_modele, s_immatriculation, s_pseudo, ecart_moyenne, nombre) return resultFunction
A veces tengo este error: OSError: excepción: lectura de violación de acceso 0x733B7359 A veces es 0x733B7359. Posiblemente sea un problema con mi argumento, no sé si .encode('utf-8') es realmente el mejor método.
Encontré el problema: no era mi DLL y cuando busqué en el método requete_smartphone
en C. En este método, todo mi c_char se usó como un número entero y se usó en una matriz (por ejemplo, matriz [banda] y mi codificación de c_char fue en UTF-8, por lo que cuando array[bande] intente apuntar a la matriz en el índice 1, con la codificación apunta a la matriz en el índice 49. Así que cambio DLL para que tenga un número entero.