diff --git a/tccpe.c b/tccpe.c
index f1bd0f78..5911296c 100644
--- a/tccpe.c
+++ b/tccpe.c
@@ -383,10 +383,13 @@ ST char pe_type;
 ST int pe_find_import(TCCState * s1, const char *symbol, char *ret)
 {
     int sym_index = find_elf_sym(s1->dynsymtab_section, symbol);
-    if (0 == sym_index && 
-        !memcmp(symbol, "__imp__", 7)) {
-	/* Hm, maybe it's '_symbol' instead of '__imp__symbol' */
-        symbol += 6;
+    if (0 == sym_index) {
+	/* Hm, maybe it's '_symbol' instead of 'symbol' or '__imp__symbol' */
+	char buffer[100];
+	if (0 == memcmp(symbol, "__imp__", 7))
+	    symbol += 6;
+	else
+	    buffer[0] = '_', strcpy(buffer + 1, symbol), symbol = buffer;
 	sym_index = find_elf_sym(s1->dynsymtab_section, symbol);
     }
     if (ret)