Implement new features #6
@ -42,7 +42,7 @@ pub fn native(stack: &mut Stack, arg: String) {
|
|||||||
let module = Library::new([libpref, arg, libsuf].join("")).unwrap();
|
let module = Library::new([libpref, arg, libsuf].join("")).unwrap();
|
||||||
// C libraries should use
|
// C libraries should use
|
||||||
// void (*labashka)(unsigned short (*pop)(void), void (*push)(unsigned short), size_t (*len)(void), size_t max_size);
|
// void (*labashka)(unsigned short (*pop)(void), void (*push)(unsigned short), size_t (*len)(void), size_t max_size);
|
||||||
|
|||||||
let func: Symbol<unsafe extern "C" fn(extern fn() -> u16, extern fn(u16) -> i32, extern fn () -> usize, usize)> = module.get(b"labashka").unwrap();
|
let func: Symbol<unsafe extern "C" fn(extern fn() -> u16, extern fn(u16), extern fn() -> usize, usize)> = module.get(b"labashka").unwrap();
|
||||||
func(stack_pop_callback,stack_push_callback,stack_len_callback, stack.memory.size());
|
func(stack_pop_callback,stack_push_callback,stack_len_callback, stack.memory.size());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,7 +4,7 @@
|
|||||||
// rustc --crate-type cdylib native_test.rs -o native_test.dll
|
// rustc --crate-type cdylib native_test.rs -o native_test.dll
|
||||||
|
|
||||||
#[no_mangle]
|
#[no_mangle]
|
||||||
unsafe extern "C" fn labashka(pop: extern fn() -> u16, push: extern fn(u16) -> i32, len: extern fn () -> usize, max: usize) {
|
unsafe extern "C" fn labashka(pop: extern fn() -> u16, push: extern fn(u16), len: extern fn () -> usize, max: usize) {
|
||||||
println!("At {}, there's {}.", len(), pop());
|
println!("At {}, there's {}.", len(), pop());
|
||||||
push(12);
|
push(12);
|
||||||
println!("Maximum size is {}.", max);
|
println!("Maximum size is {}.", max);
|
||||||
|
Loading…
Reference in New Issue
Block a user
из-за того что
stack_pop_callback
,stack_push_callback
иstack_len_callback
станутunsafe
, нужно изменить тип: