5个版本 (3个重大更新)
0.4.0 | 2020年7月14日 |
---|---|
0.3.1 | 2019年3月7日 |
0.3.0 | 2019年2月24日 |
0.2.0 | 2018年6月26日 |
0.1.0 | 2018年6月3日 |
#248 in Unix API
每月420次下载
用于 12个 crate(6个直接使用)
21KB
201 行
从Rust中加载动态(共享对象)库的最简单、最简单和安全的方法!
- 宏用于创建动态加载C API的结构体
- 适用于Linux(以及可能的其他Unix)和Windows
1.0版本路线图(未来功能)
- 使在任何时候加载API的部分变得更加容易(从同一.so文件进行模块化加载)。
- 支持一些其他不太知名的操作系统。
- 为Rust ABI/其他ABIs提供不同的加载宏(宏的可能的ABI参数?)
- 确保它完美无缺。
目录
入门
将以下内容添加到您的 Cargo.toml
。
[dependencies]
dl_api = "0.4"
示例
link!()
中的代码与 extern "C"
中的代码完全匹配。这使得您可以将 extern "C"
转换为 link!()
。
// Shared object: either "libmylibrary.so.1", "mylibrary-1.dll" or "libMyLibrary.dylib"
dl_api::link!(MyApi, "libmylibrary.so.1", {
fn cFunction(param_name: ParamType) -> ReturnType;
});
fn main() {
let api = MyApi::new().unwrap(); // unwrap the `Result`.
let rtn: ReturnType = unsafe {
(api.cFunction)(0);
};
}
API
API文档可以在 docs.rs 上找到。
功能
没有可选功能。
升级
您可以使用 变更日志 升级此crate作为依赖项。
许可协议
许可协议为以下之一
- Apache许可证,版本2.0,(LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- Zlib许可证,(LICENSE-ZLIB 或 https://opensource.org/licenses/Zlib)
任选其一。
贡献
除非您明确说明,否则您根据Apache-2.0许可证定义的,有意提交以包含在作品中的任何贡献,将双重许可如上所述,不附加任何额外条款或条件。
欢迎贡献者(感谢您的兴趣!)无论是错误报告、错误修复、功能请求、功能实现或其他。不要害羞,积极参与。我总是抽出时间来修复错误,所以通常在报告后几天就会发布库的修补版本。功能请求可能不会那么快完成。如果您有任何问题、设计批评或希望根据您的技能水平为我找到一些工作,您可以发送电子邮件至 [email protected]。否则,这里提供了GitHub上的问题链接。在贡献之前,请查看贡献指南,并且,一如既往,请确保遵守行为准则。
依赖项
~175KB