【发布时间】:2015-11-24 02:45:36
【问题描述】:
我对学习 ocaml 真的很感兴趣,它速度快(他们说它可以编译为本机代码),而且它很实用。所以我尝试编写一些简单的代码,比如启用 mysql 事件调度程序。
#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 karmic)时,这些命令都不起作用
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
然后我尝试删除“#load”,所以代码是这样的
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。
-
我第一次尝试从网络修改它(忘记地址)。我试过你的建议,你是对的,所以我从代码中删除了“Printf.sprintf”部分。谢谢。
标签: compilation ocaml native