@@ -134,14 +134,24 @@ struct ggml_backend_registry {
134134
135135 ggml_backend_reg_t load_backend (const char * path, bool silent) {
136136#ifdef _WIN32
137+ // suppress error dialogs for missing DLLs
138+ DWORD old_mode = SetErrorMode (SEM_FAILCRITICALERRORS);
139+ SetErrorMode (old_mode | SEM_FAILCRITICALERRORS);
140+
137141 HMODULE handle = LoadLibraryA (path);
142+
138143 if (!handle) {
139144 if (!silent) {
140145 GGML_LOG_ERROR (" %s: failed to load %s: %lu\n " , __func__, path, GetLastError ());
141146 }
147+ SetErrorMode (old_mode);
142148 return nullptr ;
143149 }
150+
144151 ggml_backend_init_t backend_init = (ggml_backend_init_t ) GetProcAddress (handle, " ggml_backend_init" );
152+
153+ SetErrorMode (old_mode);
154+
145155 if (!backend_init) {
146156 if (!silent) {
147157 GGML_LOG_ERROR (" %s: failed to find ggml_backend_init in %s: %lu\n " , __func__, path, GetLastError ());
@@ -151,13 +161,16 @@ struct ggml_backend_registry {
151161 }
152162#else
153163 void * handle = dlopen (path, RTLD_NOW | RTLD_LOCAL);
164+
154165 if (!handle) {
155166 if (!silent) {
156167 GGML_LOG_ERROR (" %s: failed to load %s: %s\n " , __func__, path, dlerror ());
157168 }
158169 return nullptr ;
159170 }
171+
160172 auto * backend_init = (ggml_backend_init_t ) dlsym (handle, " ggml_backend_init" );
173+
161174 if (!backend_init) {
162175 if (!silent) {
163176 GGML_LOG_ERROR (" %s: failed to find ggml_backend_init in %s: %s\n " , __func__, path, dlerror ());
@@ -167,6 +180,7 @@ struct ggml_backend_registry {
167180 }
168181#endif
169182 ggml_backend_reg_t reg = backend_init ();
183+
170184 if (!reg || reg->api_version != GGML_BACKEND_API_VERSION) {
171185 if (!silent) {
172186 if (!reg) {
0 commit comments