Describe the bug
When use dynamic library to render, clicking the exit button the application stop for seconds and exit with error.
To Reproduce
Steps to reproduce the behavior:
main.rs:
use eframe::egui::{self, Context};
use eframe::{App, Frame};
use libloading::{Library, Symbol};
use std::fs;
pub struct Program {
libs: Vec<Library>,
}
impl Default for Program {
fn default() -> Program {
let plugins = fs::read_dir("libs/").expect("no plugins folder!");
let mut libs = vec![];
for plugin in plugins {
unsafe {
let path = plugin.unwrap().path();
let lib = Library::new(path).expect("couldn't find dll");
libs.push(lib);
}
}
Self { libs }
}
}
impl App for Program {
fn update(&mut self, ctx: &Context, _frame: &mut Frame) {
for lib in &self.libs {
unsafe {
let func: Symbol<unsafe extern "C" fn(&Context)> = lib.get(b"render").unwrap();
func(ctx);
}
}
egui::SidePanel::right("main").show(ctx, |ui| {
ui.heading("My egui Application Main");
});
}
}
fn main() {
let options = eframe::NativeOptions {
viewport: egui::ViewportBuilder::default().with_inner_size([320.0, 240.0]),
..Default::default()
};
eframe::run_native(
"My egui App",
options,
Box::new(|_cc| Ok(Box::<Program>::default())),
)
.unwrap();
}
lib.rs:
use eframe::egui;
use eframe::egui::Context;
#[no_mangle]
pub fn render(ctx: &Context) {
egui::SidePanel::left("dll").show(ctx, |ui| {
ui.heading("My egui Application dll");
});
}
Expected behavior
Exit normally.
Screenshots
Desktop (please complete the following information):
OS: Windows11
Additional context
Error appears on both Glow and wgpu backend.
Both panic before dropping painter.
Eframe version: 0.28.1
Error 0xc000041d exists when exception isn't handled in windows' user callback.
Describe the bug When use dynamic library to render, clicking the exit button the application stop for seconds and exit with error.
To Reproduce Steps to reproduce the behavior: main.rs:
lib.rs:
Expected behavior Exit normally.
Screenshots
Desktop (please complete the following information):
Additional context Error appears on both
Glow
andwgpu
backend. Both panic before droppingpainter
. Eframe version: 0.28.1 Error0xc000041d
exists when exception isn't handled inwindows
' user callback.