c 语言 封装dll_关于Rust封装C++接口需要注意的地方

本文介绍了Rust如何封装C++动态库,重点讨论了使用rust-bindgen自动生成对接代码,以及在封装过程中遇到的坑,如lib文件搜索、DLL加载和C库的封装。通过创建C接口作为桥接,解决Rust无法直接处理C++虚函数的问题,并提供了回调函数的实现示例。
摘要由CSDN通过智能技术生成

这篇文章是用来讲述Rust封装C++的动态依赖库的一些坑吧 当然可能没啥技术含量~~~

我是 C++小白 哈哈哈哈

要求:因为要封装C++的dll, 要Rust能够调用到C++的动态依赖库

这个好像在国内我没搜到啥相关的有效的资料吧 QAQ, 挺难受的, 简单的Rust的基础就不讲了, 我把几个坑点说下,下面的内容是建立在你有一些c++的基础上哈

关于封装接口的库的选择

这里我推荐[rust_bindgen](rust-lang/rust-bindgen ), 这个项目能够为你的头文件以及相关结构体自动生成对接的rust代码, 不需要手动去写 一些函数,目前的缺点是 不能够处理C++的虚函数。

需要注意的几个点

1. lib文件的搜索

println!("cargo:rustc-link-search=native={}", lib_dir);

这个是告诉cargo 去搜索下面的路径的lib文件(不要问啥为啥是println ),

注意 仅仅是去搜索,如果你在你的rust代码中不去link那个代码,他还是不会加入到rustc的编译参数里面的哦

2. 对于dll搜索, 我们需要使用

println!("cargo:rustc-flags=-L {}"

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值