我想从GnuCOBOL给Rust打电话.作为测试,我从Brian Tiffin的GNUCobol FAQ中复制了Can GnuCOBOL interface with Rust?中第一个示例中的代码,但在运行它时遇到错误.
预期:
$ make -B
rustc --crate-type=dylib called.rs
LD_RUN_PATH=. cobc -xj caller.cob -L. -lcalled
:Hello, world:
实际:
$ make -B
rustc --crate-type=dylib called.rs
LD_RUN_PATH=. cobc -xj caller.cob -L. -lcalled
libcob: error: module 'hello_rust' not found
make: *** [makefile:5: caller] Error 1
在从命令行编译这两个文件,然后使用$ ./caller
之后,我得到了相同的错误.
根据cobc
手册页以及GnuCOBOL manual和Rust reference的链接部分,语法似乎是正确的.我已经try 了GnuCOBOL手册中描述的$ ./caller COB_LIBRARY_PATH=.
,但没有什么不同.Rust源代码如预期的那样编译为库,但COBOL没有找到它.
使用$ cobcrun caller
代替显示libcob: error: module 'caller' not found
.
关于类似错误的This个问题是关于静态链接多个COBOL源文件的,这工作得很好,而关于类似错误的this个问题似乎是关于X"AF"
的问题,这里不使用它.静态地将C源代码与Jay Moseley的C Wrapper for Calling Library Function示例链接在一起可以达到预期效果.不支持静态链接 rust 源.
软件版本:
- Ubuntu 22.04.1 LTS
- COBC(GnuCOBOL)3.1.2.0
- Rustc 1.64.0