本文主要是介绍POC 使用rust编写mathematica库函数,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
参考之前的文章:Mathematica 使用C语言编写库函数教程 带示例
主要是实现三个接口和自己的函数就可以了,至于头文件可以用 bindgen 生成对应的代码,我这里糊了个最小实现。
use std::ffi::c_void;const LIBRARY_NO_ERROR: i32 = 0;#[repr(C)]
pub union MArgument {integer: *mut i32,real: *mut f64,
}#[no_mangle]
pub extern "C" fn WolframLibrary_getVersion() -> i32 {5
}#[no_mangle]
pub extern "C" fn WolframLibrary_initialize(_lib_data: *mut c_void) -> i32 {LIBRARY_NO_ERROR
}#[no_mangle]
pub extern "C" fn WolframLibrary_uninitialize(_lib_data: *mut c_void) {}// fun = LibraryFunctionLoad["mmalib.dll", "fun", {Integer}, Integer]
// fun[100]
#[no_mangle]
pub extern "C" fn fun(_lib_data: *mut c_void,argc: i32,args: *mut MArgument,res: MArgument,
) -> i32 {let n = unsafe { *(*args).integer };let s = (1..n + 1).sum();unsafe { *res.integer = s }LIBRARY_NO_ERROR
}
这篇关于POC 使用rust编写mathematica库函数的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!