我真的很感興趣學習ocaml,它很快(他們說它可以編譯爲本地代碼)並且它是功能性的。所以我嘗試編寫一些簡單的代碼,例如啓用mysql事件調度程序。如何將ocaml編譯爲本地代碼
#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);;
它工作在ocaml的解釋很好,但是當我試圖把它編譯爲本地(我使用Ubuntu的業力),無論這些命令的工作
ocamlopt -o mysqleventon mysqleventon.ml unix.cmxa mysql.cmxa
ocamlopt -o mysqleventon mysqleventon.ml unix.cma mysql.cma
我也嘗試
ocamlc -c mysqleventon.ml unix.cma mysql.cma
所有這些導致相同的消息
File "mysqleventon.ml", line 1, characters 0-1:
Error: Syntax error
我再試着刪除「#負載」,所以代碼是這樣
let db = Mysql.quick_connect
~user:"username"
~password:"userpassword"
~database:"databasename"();;
let sql =
"SET GLOBAL EVENT_SCHEDULER=1;"
in
(Mysql.exec db sql);;
的ocamlopt結果消息
File "mysqleventon.ml", line 1, characters 9-28:
Error: Unbound value Mysql.quick_connect
我希望有人能告訴我,在哪裏我做錯誤。
只是一個評論:你不需要Printf.sprintf在你展示的代碼。 – 2010-04-20 22:53:16
我從網上修改它(忘記地址),作爲我在數據庫上的第一次嘗試。我已經嘗試了你的消解,並且你是對的,所以我從代碼中刪除了「Printf.sprintf」部分。謝謝。 – 2010-04-21 03:56:10