ocsigenserver: main: 引用未定义的全局“Https_client”
ocsigenserver: main: Reference to undefined global `Https_client'
我有一个名为 Facebook.ml 的文件,它使用来自 Netclient 库的 Https_client 模块。我已将文件编译为 Facebook.cmo,我可以在顶层和我编译的其他代码中毫无问题地使用所有函数。
但是,ocsigenserver 无法在 Netclient 库中找到 Https_client 模块,当我使用 make test.byte
测试我的 ocsigen 构建时,我收到错误
ocsigenserver -c local/etc/UC/UC-test.conf
ocsigenserver: main: Fatal - While loading /home/.../Facebook.cmo: error while linking /home/.../Facebook.cmo.
ocsigenserver: main: Reference to undefined global `Https_client'
make: *** [test.byte] Error 52
我已将以下行添加到我的 .conf.in 文件中:
<library module="/home/.../Facebook.cmo" />
我正在用
编译 Facebook.ml
ocamlfind ocamlc -thread -package core,equeue-ssl,netclient,lwt -linkpkg Facebook.ml
我做错了什么?
根据 Drup 的建议,我将 Makefile.options 文件更新为
PROJECT_NAME := UC
# Source files for the server
SERVER_FILES := UC.ml Facebook.cmo
# Source files for the client
CLIENT_FILES := $(wildcard *.eliomi *.eliom)
# OCamlfind packages for the server
SERVER_PACKAGES := home/alpha/.opam/4.01.0/lib/netclient/netclient.cma
# OCamlfind packages for the client
CLIENT_PACKAGES :=
收到错误:
Fatal error: exception Fl_package_base.No_such_package("home/alpha/.opam/4.01.0/lib/netclient/netclient.cma", "")
make: *** [_server/Facebook.cmo] Error 2
但我知道该文件确实存在于指定的文件路径中。我需要在其他地方添加路径吗?
Ocsigen 尝试动态 link 您的 .cmo,但它尚未加载 netclient 库。
因此,您可以将库添加到 ocsigen 应该加载的文件中,或者仅引用 ocsigen 模块。
您有多种解决方案:
- 您似乎在使用 eliom-distillery 生成文件。如果是这样,请不要自己修改 .conf,而是修改
Makefile.options
。在 SERVER_FILES
中添加文件,在 SERVER_PACKAGES
中添加所需的库。它还会自行编译您的文件。
- 继续自己编译,但是加上-linkall
- 正如 PatJ 所说,添加
<extension findlib-package="netclient"/>
以使 ocsigenserver 加载 netclient
库。
我强烈建议第一个。
此外,如果您想要一个 http 客户端,one inside ocsigenserver but you should probably use cohttp(特别是考虑到 ocsigenserver 本身很快就会使用它)。
我有一个名为 Facebook.ml 的文件,它使用来自 Netclient 库的 Https_client 模块。我已将文件编译为 Facebook.cmo,我可以在顶层和我编译的其他代码中毫无问题地使用所有函数。
但是,ocsigenserver 无法在 Netclient 库中找到 Https_client 模块,当我使用 make test.byte
测试我的 ocsigen 构建时,我收到错误
ocsigenserver -c local/etc/UC/UC-test.conf
ocsigenserver: main: Fatal - While loading /home/.../Facebook.cmo: error while linking /home/.../Facebook.cmo.
ocsigenserver: main: Reference to undefined global `Https_client'
make: *** [test.byte] Error 52
我已将以下行添加到我的 .conf.in 文件中:
<library module="/home/.../Facebook.cmo" />
我正在用
编译 Facebook.ml ocamlfind ocamlc -thread -package core,equeue-ssl,netclient,lwt -linkpkg Facebook.ml
我做错了什么?
根据 Drup 的建议,我将 Makefile.options 文件更新为
PROJECT_NAME := UC
# Source files for the server
SERVER_FILES := UC.ml Facebook.cmo
# Source files for the client
CLIENT_FILES := $(wildcard *.eliomi *.eliom)
# OCamlfind packages for the server
SERVER_PACKAGES := home/alpha/.opam/4.01.0/lib/netclient/netclient.cma
# OCamlfind packages for the client
CLIENT_PACKAGES :=
收到错误:
Fatal error: exception Fl_package_base.No_such_package("home/alpha/.opam/4.01.0/lib/netclient/netclient.cma", "")
make: *** [_server/Facebook.cmo] Error 2
但我知道该文件确实存在于指定的文件路径中。我需要在其他地方添加路径吗?
Ocsigen 尝试动态 link 您的 .cmo,但它尚未加载 netclient 库。
因此,您可以将库添加到 ocsigen 应该加载的文件中,或者仅引用 ocsigen 模块。
您有多种解决方案:
- 您似乎在使用 eliom-distillery 生成文件。如果是这样,请不要自己修改 .conf,而是修改
Makefile.options
。在SERVER_FILES
中添加文件,在SERVER_PACKAGES
中添加所需的库。它还会自行编译您的文件。 - 继续自己编译,但是加上-linkall
- 正如 PatJ 所说,添加
<extension findlib-package="netclient"/>
以使 ocsigenserver 加载netclient
库。
我强烈建议第一个。
此外,如果您想要一个 http 客户端,one inside ocsigenserver but you should probably use cohttp(特别是考虑到 ocsigenserver 本身很快就会使用它)。