如何在Dune编译环境中引入OCaml的Str库?
解决OCaml Dune编译时Str库缺失的问题
问题原因
Str是OCaml标准库的扩展模块,默认不会被自动链接,编译时必须显式声明依赖,否则会出现模块未找到的错误。
解决步骤
根据Str库的实际使用位置,修改src/dune文件的对应配置:
如果
myProgram.exe中直接使用了Str库
修改executable节点的libraries字段,添加str:(env (_ (flags :standard -w -27-26-32-33))) (executable (name myProgram) (modules myProgram) (libraries myLib str) (modes byte exe)) (library (name myLib) (modules M1 M2 M3 M4 M5 M6 M7))如果
myLib中的模块(M1-M7)使用了Str库
修改library节点,添加libraries字段并声明str:(env (_ (flags :standard -w -27-26-32-33))) (executable (name myProgram) (modules myProgram) (libraries myLib) (modes byte exe)) (library (name myLib) (modules M1 M2 M3 M4 M5 M6 M7) (libraries str))
验证修改
执行原编译命令:
dune build src/myProgram.exe
编译即可正常完成。
内容的提问来源于stack exchange,提问作者user13099610
相关产品推荐
相关产品推荐

