diff --git a/src/AST/SymbolContext.cs b/src/AST/SymbolContext.cs index dccbeaf1..b865322d 100644 --- a/src/AST/SymbolContext.cs +++ b/src/AST/SymbolContext.cs @@ -87,22 +87,34 @@ namespace CppSharp.AST if (FindLibraryBySymbol(symbol, out lib)) return true; + string alternativeSymbol; + // Check for C symbols with a leading underscore. - if (FindLibraryBySymbol("_" + symbol, out lib)) + alternativeSymbol = "_" + symbol; + if (FindLibraryBySymbol(alternativeSymbol, out lib)) + { + symbol = alternativeSymbol; + return true; + } + + alternativeSymbol = symbol.TrimStart('_'); + if (FindLibraryBySymbol(alternativeSymbol, out lib)) { - symbol = "_" + symbol; + symbol = alternativeSymbol; return true; } - if (FindLibraryBySymbol("_imp_" + symbol, out lib)) + alternativeSymbol = "_imp_" + symbol; + if (FindLibraryBySymbol(alternativeSymbol, out lib)) { - symbol = "_imp_" + symbol; + symbol = alternativeSymbol; return true; } + alternativeSymbol = "__imp_" + symbol; if (FindLibraryBySymbol("__imp_" + symbol, out lib)) { - symbol = "__imp_" + symbol; + symbol = alternativeSymbol; return true; }