--- a/faad.c
+++ b/faad.c
@@ -594,6 +594,8 @@ static bool load_faad() {
 		return false;
 	}
 
+	err = dlerror();	// Reset previous dynamic linking error string (if there was)
+
 	a->NeAACDecGetCurrentConfiguration = dlsym(handle, "NeAACDecGetCurrentConfiguration");
 	a->NeAACDecSetConfiguration = dlsym(handle, "NeAACDecSetConfiguration");
 	a->NeAACDecOpen = dlsym(handle, "NeAACDecOpen");
--- a/ffmpeg.c
+++ b/ffmpeg.c
@@ -620,6 +620,8 @@ static bool load_ff() {
 		return false;
 	}
 
+	err = dlerror();	// Reset previous dynamic linking error string (if there was)
+
 	sprintf(name, LIBAVFORMAT, LIBAVFORMAT_VERSION_MAJOR);
 	handle_format = dlopen(name, RTLD_NOW);
 	if (!handle_format) {
--- a/flac.c
+++ b/flac.c
@@ -241,6 +241,8 @@ static bool load_flac() {
 		return false;
 	}
 
+	err = dlerror();	// Reset previous dynamic linking error string (if there was)
+
 	f->FLAC__StreamDecoderErrorStatusString = dlsym(handle, "FLAC__StreamDecoderErrorStatusString");
 	f->FLAC__StreamDecoderStateString = dlsym(handle, "FLAC__StreamDecoderStateString");
 	f->FLAC__stream_decoder_new = dlsym(handle, "FLAC__stream_decoder_new");
--- a/ir.c
+++ b/ir.c
@@ -168,10 +168,10 @@ static void *ir_thread() {
 			UNLOCK_I;
 			wake_controller();
 		}
-		
+
 		free(code);
 	}
-	
+
 	return 0;
 }
 
@@ -185,6 +185,8 @@ static bool load_lirc() {
 		return false;
 	}
 
+	err = dlerror();	// Reset previous dynamic linking error string (if there was)
+
 	i->lirc_init = dlsym(handle, "lirc_init");
 	i->lirc_deinit = dlsym(handle, "lirc_deinit");
 	i->lirc_readconfig = dlsym(handle, "lirc_readconfig");
--- a/mad.c
+++ b/mad.c
@@ -365,7 +365,9 @@ static bool load_mad() {
 		LOG_INFO("dlerror: %s", dlerror());
 		return false;
 	}
-	
+
+	err = dlerror();	// Reset previous dynamic linking error string (if there was)
+
 	m->mad_stream_init = dlsym(handle, "mad_stream_init");
 	m->mad_frame_init = dlsym(handle, "mad_frame_init");
 	m->mad_synth_init = dlsym(handle, "mad_synth_init");
--- a/mpg.c
+++ b/mpg.c
@@ -222,7 +222,9 @@ static bool load_mpg() {
 		LOG_INFO("dlerror: %s", dlerror());
 		return false;
 	}
-	
+
+	err = dlerror();	// Reset previous dynamic linking error string (if there was)
+
 	m->mpg123_init = dlsym(handle, "mpg123_init");
 	m->mpg123_feature = dlsym(handle, "mpg123_feature");
 	m->mpg123_rates = dlsym(handle, "mpg123_rates");
--- a/resample.c
+++ b/resample.c
@@ -251,6 +251,8 @@ static bool load_soxr(void) {
 		return false;
 	}
 
+	err = dlerror();	// Reset previous dynamic linking error string (if there was)
+
 	r->soxr_io_spec = dlsym(handle, "soxr_io_spec");
 	r->soxr_quality_spec = dlsym(handle, "soxr_quality_spec");
 	r->soxr_create = dlsym(handle, "soxr_create");
--- a/vorbis.c
+++ b/vorbis.c
@@ -287,6 +287,8 @@ static bool load_vorbis() {
 		}
 	}
 
+	err = dlerror();	// Reset previous dynamic linking error string (if there was)
+
 	v->ov_read = tremor ? NULL : dlsym(handle, "ov_read");
 	v->ov_read_tremor = tremor ? dlsym(handle, "ov_read") : NULL;
 	v->ov_info = dlsym(handle, "ov_info");