使用Rust动态库中损坏的Rust函数

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

目标是能够在使用该库的板条箱中使用名称混乱的功能(这将允许具有相同标识符的不同模块/名称空间的功能共存)。我注意到Rust(ver .: 1.42)自动假定导出函数的函数标识符被[[not弄乱了。目前,当在功能上使用#[no_mangle]#[export_name="..."]时,我可以成功链接并使用它。我正在使用stable-x86_64-windows-pc-msvc工具链。


工作示例

rslib / lib.rs:

#[no_mangle] /* Exports it as "func" */ pub fn func() { ... }

app / main.rs:

#[link(name="rslib.dll", kind="dylib")] extern { fn func(); } fn main() { unsafe { func(); } }
这可以编译并运行,没有问题。


无效示例

rslib / lib.rs:

pub fn func() { ... }
使用相同的“ app / main.rs”会导致链接失败,并出现以下情况:error LNK2019: unresolved external symbol __imp_func referenced in function _ZN8rust_app4main17h52189e261ef80b93E
dll rust dynamic-library
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.