From d45e767d6de47957f7b91398a5f1a0d54ef8b189 Mon Sep 17 00:00:00 2001 From: Shaun Arman Date: Thu, 18 Jun 2026 23:32:09 -0500 Subject: [PATCH] fix(windows): add memset_explicit symbol export for mingw cross-compilation - Add __declspec(dllexport) to memset_explicit in memset_s_shim.c - Explicitly link memset_shim library in build.rs for Windows MinGW target - Fixes undefined reference to memset_explicit when building for x86_64-pc-windows-gnu --- src-tauri/build.rs | 2 ++ src-tauri/memset_s_shim.c | 8 +++++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src-tauri/build.rs b/src-tauri/build.rs index 3a8a7951..595b3cc8 100644 --- a/src-tauri/build.rs +++ b/src-tauri/build.rs @@ -13,6 +13,8 @@ fn main() { .file("memset_s_shim.c") .compile("memset_shim"); println!("cargo:rerun-if-changed=memset_s_shim.c"); + // Explicitly link the shim library + println!("cargo:rustc-link-lib=static=memset_shim"); } tauri_build::build() diff --git a/src-tauri/memset_s_shim.c b/src-tauri/memset_s_shim.c index 58935b98..864ab8ae 100644 --- a/src-tauri/memset_s_shim.c +++ b/src-tauri/memset_s_shim.c @@ -6,7 +6,13 @@ #include -void memset_explicit(void *dest, int val, size_t n) { +#ifdef _WIN32 +#define EXPORT __declspec(dllexport) +#else +#define EXPORT +#endif + +EXPORT void memset_explicit(void *dest, int val, size_t n) { volatile unsigned char *p = (volatile unsigned char *)dest; while (n--) { *p++ = (unsigned char)val;