Ich bin wirklich daran interessiert zu lernen, ocaml, es schnell (sie sagten, es könnte zu nativem Code kompiliert werden) und es ist funktional. Also habe ich versucht, etwas so einfach zu programmieren wie mysql event scheduler.So kompilieren Sie Ocaml zu nativem Code
#load "unix.cma";;
#directory "+mysql";;
#load "mysql.cma";;
let db = Mysql.quick_connect
~user:"username"
~password:"userpassword"
~database:"databasename"();;
let sql =
"SET GLOBAL EVENT_SCHEDULER=1;"
in
(Mysql.exec db sql);;
Es funktionieren auf ocaml Dolmetscher, aber wenn ich es auf native zu kompilieren versuchte (ich bin ubuntu karmischen verwenden), arbeitete keiner dieser Befehl
ocamlopt -o mysqleventon mysqleventon.ml unix.cmxa mysql.cmxa
ocamlopt -o mysqleventon mysqleventon.ml unix.cma mysql.cma
Ich habe auch versucht
ocamlc -c mysqleventon.ml unix.cma mysql.cma
alle von ihnen resultierenden gleiche Nachricht
File "mysqleventon.ml", line 1, characters 0-1:
Error: Syntax error
Dann
Ich habe versucht, die „# load“ zu entfernen, so geht der Code wie dieser
let db = Mysql.quick_connect
~user:"username"
~password:"userpassword"
~database:"databasename"();;
let sql =
"SET GLOBAL EVENT_SCHEDULER=1;"
in
(Mysql.exec db sql);;
Die ocamlopt resultierende Nachricht
File "mysqleventon.ml", line 1, characters 9-28:
Error: Unbound value Mysql.quick_connect
Ich hoffe, dass mir jemand sagen könnte, wo habe ich tue falsch.
einfach einen Kommentar: Sie brauchen nicht auf die Printf.sprintf im Code Ihnen zeigen. –
Ich habe es von net (vergessen Sie die Adresse) als mein erster Versuch auf Datenbank geändert. Ich habe versucht, Ihre Vermutung, und Sie haben Recht, so dass ich "Printf.sprintf" Teil aus dem Code entfernen. Vielen Dank. –