ddxoft / master

547 stars 171 forks source link

是否可以提供rust调用的例子 #78

Open FurryWolfX opened 10 months ago

FurryWolfX commented 10 months ago

是否可以提供rust调用的例子,我使用以下方式调用,没有反应:

use libloading::os::windows::{Library, Symbol};
use std::thread;
use std::time::Duration;

fn main() {
    thread::sleep(Duration::from_secs(1));
    println!("1");
    call_dynamic();
    thread::sleep(Duration::from_secs(1));
    println!("2");
}

fn call_dynamic() {
    unsafe {
        let lib = Library::new("dd32695.x64.dll").unwrap();
        let f: Symbol<unsafe fn(i32, i32) -> i32> = lib.get(b"DD_key").unwrap();
        dbg!(&f);
        dbg!(f(601, 1));
        dbg!(f(601, 2));
        lib.close();
    }
}
kvii commented 5 months ago

@FurryWolfX 从 examples 里面的 python 代码来看,在加载 dll 后还需要调用一次 DD_btn(0) 初始化。我用 python 和 go 实验过了,确实如此。相关代码:

https://github.com/ddxoft/master/blob/f610c3b3d4dff18f326343cea3b4b6142a62ed93/Example/App_python/vs2017/DD/DD.py#L7-L12

另:如果这能够解决你的问题的话,希望你也能顺手关闭这个 issue。