8 个版本 (重大更改)

使用旧的 Rust 2015

7.0.0 2017年2月10日
6.0.0 2016年10月1日
5.0.0 2016年9月2日
4.0.0 2016年9月2日
0.2.0 2016年5月13日

#401操作系统

Download history 252/week @ 2024-02-26 240/week @ 2024-03-04 315/week @ 2024-03-11 256/week @ 2024-03-18 248/week @ 2024-03-25 255/week @ 2024-04-01 261/week @ 2024-04-08 235/week @ 2024-04-15 240/week @ 2024-04-22 237/week @ 2024-04-29 204/week @ 2024-05-06 251/week @ 2024-05-13 266/week @ 2024-05-20 254/week @ 2024-05-27 311/week @ 2024-06-03 232/week @ 2024-06-10

每月 1,068 次下载
用于 17 软件包(3 个直接使用)

ISC 许可证

63KB
809

包含 (JAR文件,54KB) gradle/wrapper/gradle-wrapper.jar

sharedlib Travis CI Appveyor CI

跨平台共享库加载器。

(crates.io) (文档)

基于 libloading by Simonas Kazlauskas.

sharedlib 是一个用于在运行时加载共享库的软件包。这对于实现插件等功能非常有用。与其他共享库软件包相比,此软件包的优势在于它提供了寿命限制和引用计数库,并允许加载函数和数据。

快速入门

要加载库,您可以使用 LibLibTrackedLibUnsafe 中的任何一个 struct。这些 struct 提供了不同的保证。有关它们提供的保证的更多信息,请参阅文档中的 选择您的保证 部分。以下示例使用 Lib

调用另一个库中的函数

unsafe {
    let path_to_lib = "examplelib.dll";
    let lib = try!(Lib::new(path_to_lib));
    let hello_world_symbol: Func<extern "C" fn()> = try!(lib.find_func("hello_world"));
    let hello_world = hello_world_symbol.get();
    hello_world();
}

访问另一个库中的数据

unsafe {
    let path_to_lib = "examplelib.dll";
    let lib = try!(Lib::new(path_to_lib));
    let my_usize_symbol: Data<usize> = try!(lib.find_data("my_usize"));
    let my_usize = my_usize_symbol.get();
    assert_eq!(*my_usize, 0);
}

更多信息

有关更多信息,请参阅 文档

依赖关系

~155KB