RUST如何在动态库中使用主程序的函数和static变量

原文约600字,阅读约需2分钟。发表于:

主程序是一个可执行文件。 在主程序中声明了全局变量G_B和函数m_add。 然后再动态加载SO文件,在SO中使用。 主程序 static mut G_B: usize = 0; fn call(){ let lib = libloading::Library::new("./target/debug/libadd.so").unwrap(); let func: libloading::Symbol<fn()> = lib.get(b"add").unwrap();} func(); } pub fn m_add(){ unsafe{ G_B += 1; } } libadd.so extern "Rust" { static mut G_B: usize; fn m_add(); } fn add(){ unsafe{ G_B +=2; } } fn m_call(){ unsafe{ m_add() } } 问题 运行主程序后,会报错,报undefined symbol: m_add" 请教下各位大佬,如何解决。谢谢

这篇文章讨论了一个主程序中的动态加载SO文件的问题。主程序声明了全局变量和函数,然后加载SO文件并使用其中的函数。然而,在运行主程序时出现了错误,报告了一个未定义的符号m_add。作者寻求解决方案。

相关推荐 去reddit讨论