utilisant le PLT-Scheme-FFI, je veux appeler la fonction CAppel mysql_real_escape_string en utilisant l'étranger PLT-Schéma Fonction Interface
unsigned long mysql_real_escape_string(MYSQL *con, char *to, const char *from, unsigned long length)
d'une procédure de système et continuer à utiliser la chaîne résultante « à » intérieur l'appelant. L'appel de la procédure de régime serait se présenter comme suit:
(define-values (to) (escape-string con ??? from (+ (string-length from) 1)))
où con est une connexion valide à un MySQL-DB et échapper-chaîne est définie par
(define escape-string (get-ffi-obj "mysql_real_escape_string" libmysql
(_fun (con to from length) ::
(con : _pointer)
(to : (_ptr io _byte))
(from : _string)
(length : _ulong)
-> (res : _ulong)
-> (values out))))
Le problème est, je ne idée de quoi passer pour '???' lors de l'appel de la chaîne d'échappement, je ne sais pas si la définition de la chaîne d'échappement est correcte.
Toute aide serait appréciée.
Cordialement,
Ralf S.
Merci pour la réponse. Je pense que je comprends l'exemple. Mais qu'en est-il de la fonction C suivante: void setstring (char * str) {strcpy (str, "foo"); } La définition de schéma suivante est-elle correcte? (définir setString (get-ffi-obj « setString "foo.so" (_fun [r: (_ptr io _byte)] -> vide -> r))) Si la définition est OK, comment J'appelle setstring de Scheme, de telle sorte que je peux continuer à travailler avec le résultat r? OMI quelque chose comme ceci (définir r (setString ???)) ou ce (LET ((r (setString ???))) ... devrait fonctionner. Cependant, je ne tout simplement pas savoir ce qu'il faut passer comme argument ??? to setstring –
Il est presque impossible de lire le code dans ce commentaire, ainsi que d'écrire une réponse dans un commentaire.Pouvez-vous l'afficher comme une nouvelle question? Liste de diffusion PLT avec elle.) –