windows - 从Rust Windows二进制条板箱导出功能

标签 windows rust ffi

#[no_mangle]
pub extern "C" fn migrate(hdl: *mut usize, err: &mut MaybeUninit<usize>) {
  // ...
}
我正在尝试在Windows 64位系统上的bin crate 中导出上述函数。 rustup show的输出如下:
nightly-x86_64-pc-windows-msvc (default)
rustc 1.51.0-nightly (a2f8f6281 2021-01-27)
我无法在构建的二进制文件(exe)中找到该符号。有什么方法可以强制将符号导出到.exe中?

最佳答案

我有一个怪异的解决方法:生成.dll以及.exe
cargo.toml中,我们定义当前的条板箱以输出同样由exports.rs生成的lib

[lib]
name = "exports"
path = "src/exports.rs"
crate-type = ["cdylib"]
exports.rs中:
#[no_mangle]
pub extern "C" fn migrate(hdl: *mut usize, err: &mut MaybeUninit<usize>) {
  // ...
}
构建时,目标目录为以下工件:engine.exeexports.dll并且符号出现在exports.dll中

关于windows - 从Rust Windows二进制条板箱导出功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65975934/

相关文章:

java - 如果 BufferedWriter 仍然打开,为什么 BufferedReader 会失败?

windows - 在 Windows 32 位上,程序如何具有较高的虚拟字节数,而私有(private)字节却相对较低?

python - 查看系统音量是否静音?

multithreading - 如何在不复制的情况下将相同的数据传递给不同的线程?

c - 使用 FFI 链接到 Rust 的本地 C 库

windows - 使用 Go 1.7 构建 dll

vector - 在 Rust 枚举/结构中接受 slice 和 Vec

rust - 不可变对象(immutable对象)根据函数签名更改为可变对象

winapi - CertOpenSystemsStoreW 或 CertCloseStore 的 Rust FFI 声明有什么问题?

macos - 错误:安装ffi时出错:错误:无法生成gem native 扩展