我试图通过将 .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();
}
我想通了。还需要执行两个步骤。 首先,我需要声明
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",
]