macro_rules! ffi_dispatch { (feature=$feature: expr, $handle: expr, $func: ident, $($arg: expr),*) => { ... }; ($handle: expr, $func: ident, $($arg: expr),*) => { ... }; }
Expand description
Macro for generically invoking a FFI function
The expected arguments are, in order:
- (Optional) The name of the cargo feature conditioning the usage of dlopen, in the form
feature="feature-name"
. If ommited, the feature"dlopen"
will be used. - A value of the handle generated by the macro
external_library!
when the dlopen-controlling feature is enabled - The name of the function to invoke
- The arguments to be passed to the function
The macro invocation evaluates to the return value of the FFI function.
§Example
Assuming an FFI function of signature fn(u32, u32) -> u32
:
ⓘ
let sum = unsafe { ffi_dispatch!(feature="dlopen", LIBRARY_HANDLE, sum, 2, 2) };