使用PLT-計劃-FFI mysql_real_escape_string,我想打電話從一個計劃程序的C函數調用使用PLT-計劃對外功能接口
unsigned long mysql_real_escape_string(MYSQL *con, char *to, const char *from, unsigned long length)
,並繼續使用生成的字符串「到」裏面呼叫者,召集者。該計劃過程的調用會是這樣的:
(define-values (to) (escape-string con ??? from (+ (string-length from) 1)))
其中con是一個MySQL-DB的有效連接和逃避串由
(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))))
的問題是定義,我沒有想法什麼傳遞給'???'當調用escape-string時,我也不知道escape-string的定義是否正確。
任何幫助,將不勝感激。
問候,
拉爾夫S.
感謝您的答覆。我想我理解這個例子。但是下面的C函數怎麼樣: void setstring(char * str){strcpy(str,「foo」); } 以下Scheme定義是否正確? (定義了setString (GET-FFI-OBJ「的SetString 「foo.so」 (_fun [R:(_ptr IO _byte)] - >空 - > R))) 如果定義是確定的,該怎麼辦我從Scheme中調用setstring,以便我可以繼續處理結果r?國際海事組織是這樣的 (定義R(的SetString ???)) 或本 (LET((R(的SetString ???)))... 應該工作。但是,我只是不知道要傳遞什麼作爲參數???設置字符串。 –
幾乎不可能閱讀本評論中的代碼,以及在評論中撰寫回復。您可以將此作爲新問題發佈嗎?(或者繼續閱讀PLT郵件列表。) –