#def #microsoft #msvc #linker #no-alloc #module-file

无std msvc_def

用于读取Microsoft模块定义(.def)文件的库

1 个不稳定版本

0.1.0 2024年2月8日

#6#def

MIT/Apache

65KB
1.5K SLoC

msvc_def

msvc_def

一个与Microsoft模块定义(.Def)文件兼容的库,支持无std(可选allocstd特性)。

const CONTENTS: &str = "
LIBRARY \"mylib\"

EXPORTS
    myfunc = inner_func @1
";

// Available both as no_std, no_alloc references only
let file = msvc_def::parse_ref(CONTENTS)?;
assert_eq!(file.is_library, Some(true));
assert_eq!(file.name, Some("mylib"));

// With iterator based variable length items
let mut export = file.exports;
assert_eq!(export.next(), Some(Ok(ExportRef::new("myfunc", Some("inner_func"), Some(1), false, false, false))));
assert_eq!(export.next(), None);

// And as no_std, alloc owned types
let file = msvc_def::parse(CONTENTS)?;
assert_eq!(file.is_library, Some(true));
assert_eq!(file.name, Some("mylib".to_string()));

// With Vec based variable length items
let mut export = file.exports;
assert_eq!(export.len(), 1);
assert_eq!(export.get(0), Some(Export::new("myfunc".to_string(), Some("inner_func".to_string()), Some(1), false, false, false)).as_ref());
assert_eq!(export.get(1), None);

用法

将以下内容添加到Cargo.toml

[dependencies]
msvc_def = "0.1.0"

或者使用cargo添加

cargo add msvc_def

特性

注意

代码高亮显示中的文档项目直接来自Microsoft参考

无运行时依赖

特性