代码之家  ›  专栏  ›  技术社区  ›  Matthias Braun AdamSkywalker

从Vim调用OCaml:无法加载共享库dllbin\u prot\u存根

  •  -1
  • Matthias Braun AdamSkywalker  · 技术社区  · 8 年前

    我有一个OCaml程序,我想从Vim调用它。

    .vimrc ,我定义了一个应该执行OCaml字节码的命令:

    command! MyCommand call FunctionCallingOCaml()
    function! FunctionCallingOCaml()
      let scriptPath = $HOME . "/path/to/myOCamlProgram.byte"
      let ocamlCmd = "ocamlrun " . scriptPath
      execute "!" . ocamlCmd
    endfunction
    

    不幸的是,这不起作用;我收到一条错误消息:

    致命错误:无法加载共享库dllbin\u prot\u存根

    myOCamlProgram.byte

    此外,我可以调用shell内置函数,如 ls 以及类似的程序 grep 从Vim使用 execute


    uname -a :

    Linux marathon 4.12.10-1-ARCH#1 SMP抢占周三8月30日12:18:42 CEST 2017 x86_64 GNU/Linux

    opam --version : 1.2.2

    VIM-Vi改进了8.0(2016年9月12日,2017年9月19日编译13:59:47)

    1 回复  |  直到 8 年前
        1
  •  1
  •   Matthias Braun AdamSkywalker    8 年前

    事实证明,OPAM在运行Vim的shell中没有正确初始化。 路径不包括导致错误的OCaml二进制文件。

    作为补救措施,我打了电话 eval $(opam config env) 要设置环境变量并修改路径,以便我的Linux安装将从Vim运行OCaml程序,请执行以下操作:

    let ocamlCmd = "eval $(opam config env) && ocamlrun " . scriptPath
    execute "!" . ocamlCmd
    

    更好的是,将此添加到您的 .bash_profile 因此,每次登录时,您的shell都会根据OPAM进行初始化:

    . /home/mb/.opam/opam-init/init.sh
    

    shell脚本之前的点 sources

    推荐文章