diff --git a/libtcc.c b/libtcc.c index d7615824..070c6f30 100644 --- a/libtcc.c +++ b/libtcc.c @@ -1300,7 +1300,7 @@ ST_FUNC int tcc_add_crt(TCCState *s, const char *filename) LIBTCCAPI int tcc_add_library(TCCState *s, const char *libraryname) { #ifdef TCC_TARGET_PE - const char *libs[] = { "%s/%s.def", "%s/lib%s.def", "%s/%s.dll", "%s/lib%s.dll", "%s/lib%s.a", NULL }; + const char *libs[] = { "%s/%s.def", "%s/lib%s.def", "%s/%s.dll", "%s/lib%s.dll", "%s/lib%s.a", "%s/%s.c", NULL }; const char **pp = s->static_link ? libs + 4 : libs; #else const char *libs[] = { "%s/lib%s.so", "%s/lib%s.a", NULL }; @@ -1308,8 +1308,15 @@ LIBTCCAPI int tcc_add_library(TCCState *s, const char *libraryname) #endif while (*pp) { if (0 == tcc_add_library_internal(s, *pp, - libraryname, 0, s->library_paths, s->nb_library_paths)) + libraryname, 0, s->library_paths, s->nb_library_paths)) { +#ifdef TCC_TARGET_PE + /* extra search for *.c file together with *.def file */ + if (pp < libs + 2) + tcc_add_library_internal(s, *(libs + 5), libraryname, 0, + s->library_paths, s->nb_library_paths); +#endif return 0; + } ++pp; } return -1;