如何使用 .def 文件在 Rust dll (cdylib) 中创建转发导出

问题描述 投票:0回答:1

我试图通过将 .def 文件传递到 MSVC 链接器来在我的 Rust 箱上添加转发导出函数。我创建了以下简单的 .def 文件:

EXPORTS
   ExportName=ForwardedModule.ExportName

然后,我将以下内容添加到我的

.cargo\config
文件中:

[build]
rustflags = [
  "-C", "link-arg=/DEF:C:\\Path\\To\\My\\DefFile\\file.def",
]

据我了解,这应该足以在生成的 dll 上创建转发的导出条目。但是,链接器抛出以下错误:

error LNK2001: unresolved external symbol ExportName

板条箱定义为

crate-type = ["cdylib"]
中的
cargo.toml

我也尝试在

lib.rs
中添加以下代码,但它也不起作用:

extern "C"
{
    #[no_mangle]
    fn ExportName();
}
rust dll linker
1个回答
0
投票

我想通了。还需要执行两个步骤。 首先,我需要声明

ExportName
函数,如下所示:

#[no_mangle]
fn ExportName() {
}

然后,我需要在

.cargo\config
文件中设置目标工具链:

[build]
target = "x86_64-pc-windows-msvc"
rustflags = [
 "-C", "link-arg=/DEF:/DEF:C:\\Path\\To\\My\\DefFile\\file.def",
]
© www.soinside.com 2019 - 2024. All rights reserved.