author | sheepluva |
Tue, 22 Jun 2021 22:13:55 +0200 | |
changeset 15802 | d5c37e78ab83 |
parent 14166 | 7d3b94cdc3c4 |
child 15805 | 61da40b657fa |
permissions | -rw-r--r-- |
14166 | 1 |
extern crate libloading; |
2 |
||
3 |
use libloading::{Library, Symbol}; |
|
4 |
use std::ops::Deref; |
|
5 |
||
6 |
struct EngineInstance {} |
|
7 |
||
8 |
struct Engine<'a> { |
|
9 |
protocol_version: Symbol<'a, unsafe fn() -> u32>, |
|
10 |
start_engine: Symbol<'a, unsafe fn() -> *mut EngineInstance>, |
|
11 |
cleanup: Symbol<'a, unsafe fn(engine_state: *mut EngineInstance)>, |
|
12 |
} |
|
13 |
||
14 |
fn main() { |
|
15 |
let hwlib = Library::new("libhedgewars_engine.so").unwrap(); |
|
16 |
||
17 |
unsafe { |
|
18 |
let engine = Engine { |
|
15802
d5c37e78ab83
hedgewars-engine (rust): fix "protocol_version" -> "hedgewars_engine_protocol_version"
sheepluva
parents:
14166
diff
changeset
|
19 |
protocol_version: hwlib.get(b"hedgewars_engine_protocol_version").unwrap(), |
14166 | 20 |
start_engine: hwlib.get(b"start_engine").unwrap(), |
21 |
cleanup: hwlib.get(b"cleanup").unwrap(), |
|
22 |
}; |
|
23 |
||
24 |
println!("Hedgewars engine, protocol version {}", engine.protocol_version.deref()()); |
|
25 |
} |
|
26 |
} |