Additionally any attempt to access the string fields of the LibLog structure result in crash.
The Host Application cannot read out even the numeric fields correctly which makes me think that the Rust Structure is not aligned correctly in memory to the C Language conventions and thus incompatible with the Host Application.
Your log_debug function takes an Option<&LibLog> (similar to a borrowed const LibLog* in C) and log_free takes a Option<Box<LibLog>> (similar to an owned LibLog* in C), however log_clear takes a &mut Option<&mut LibLog>> which corresponds to a LibLog** in C (notice the double indirection). Is that supposed to be like this or is it a typo?