1#![allow(non_camel_case_types, non_upper_case_globals)]
2use std::sync::LazyLock;
3
4mod consts;
5mod types;
6
7mod functions;
9
10pub use consts::*;
11pub use types::*;
12
13#[cfg(not(feature = "dynamic_loading"))]
14pub use functions::dynamic_linking::*;
15#[cfg(feature = "dynamic_loading")]
16pub use functions::dynamic_loading::*;
17
18static LIB_RESULT: LazyLock<Result<libloading::Library, libloading::Error>> =
19 LazyLock::new(|| unsafe {
20 log::info!("Loading jack from {}.", JACK_LIB);
21 libloading::Library::new(JACK_LIB)
22 });
23
24pub fn library() -> Result<&'static libloading::Library, impl std::error::Error> {
34 LIB_RESULT.as_ref()
35}