因此,在OCaml中执行命令的默认方式是Sys.command s,其中s是本例中的命令,但是当命令涉及本地程序时遇到了一个问题。例如,如果我有一个名为prog
的可执行文件,我是从ocaml文件编译的,并且我使用Sys.command "prog {args}"
,则会收到错误'prog' is not recognized as an internal or external command, operable program or batch file.
并使用命令./prog {args}
似乎也没有改变任何东西,从那以后它说'.' is not recognized as an internal or external command, operable program or batch file.
有什么建议吗?
答案 0 :(得分:1)
问题可能在prog
并且位于OCaml之外,换句话说,你的编程不是程序,因此操作系统无法运行它。
这是一个适合我的例子:
$ cat > test << EOF
#!/bin/sh
echo hello
EOF
$ chmod a+x test
$ ocaml
# Sys.command "./test";;
hello
- : int = 0
答案 1 :(得分:1)
因此,上述用户之一是正确的:在Windows中,ocamlc生成的批处理文件无法执行。相反,一个简单的解决方法就是通过将.exe标记附加到您想要生成的文件名来进行编译。 ocamlc -o prog.exe myfile.ml
。然后,只需使用Sys.command "prog.exe {args}"
。