rust的FFI机制可以很轻松与C库进行调用,但也复杂,如果你自己人工翻译代码的话,还好有bindgen工具。
本来觉得像opencv这样的库,rust应该有人进行绑定使用,确实有,但很复杂,原来是多种的,最坑的就是墙,
opencv-rust https://github.com/twistedfall/opencv-rust 这个库在配置windows下使用时,光依赖库就下不下去了。
然后再看其它库,总之就是感觉想使用起来很复杂。
后来仔细看看了FFI相关文档,资料中都是再三强调,C++提供ABI时都是使用C的ABI,因为它的自己也说不清楚,只有C ABI是最通用的兼容调用,而RUST也是与C ABI兼容的,虽然opencv有一部分C++代码,但最终还是导出C的头文件信息。
所以后来就想,我又不是要用所有的opencv功能,只是用几个相关函数,但是opencv的.h头文件还真不少,而一个头文件依赖另一个依赖头文件,靠人工我感觉是呵呵了,所以就使用了bindgen这个工具(这个工具资料是相当的少啊,介绍的都是简单的例子,功能是很强大,但坑需要大家踩)。
windows中绑定opencv项目放到了https://gitee.com/qwsaeda/rust-opencv-lib,上面有使用方法,有问题或有更好的方法就告知。