Thank you for your answer!
I'm not sure I understand what are the implications of PE etc. formats. I will rephrase my question:
1. Given a static library built using Visual Studio (e.g. 2015) using C language, will linking to it from PelesC work ok?
2. The same with a shared library, will I be able to load, it and call functions as usual?
1. No, probably not. While theoretically you should be able to, with Pelles and VC both using COFF format, the libraries MS ships have stripped symbol tables leading to internal routine names not being locatable. The names that other modules may have references to anyways are from tables internal to the VC compiler DLL, or are part of the debug versions of the libraries. The linker definitions file usually includes only the import by index entries for the retail versions, not the import by name entries, for entry points not intended to be referenced using GetProcAddress.
2. Possibly, if you create a Pelles specific import lib for each DLL with POLIB. The symbols headers don't reference will be pre-converted to indexes if necessary so there will be few to no unresolved symbols, unless a library is looking for callbacks into a particular executable. The problem of routines exported only by index still remains however; use of the library somewhat limited to the routines that GetProcAddress can see as named values and you have prototypes in a header for the parameters.
Side note, to expand on frankie's reply: COFF is the format for object files and static libs that MS developed. The extension doesn't really matter, it's magic numbers and header bits that determine whether it's a static library or single object for the linker to use. Intel's OMF is similar, defining the library and object format, but ELF more describes the object format only, static libs are generally compatible with the ar library utility as a separate format. COFF's focus is processing a flat address space efficiently at load time; OMF get's flat handling as a subset of it's segment/offset original focus for creating DOS and DPMI/Win16 executables, extended to the 32 and 64 bit addressing types. PE format is that used by files intended to be accessed using the LoadModule and CreateProcess APIs, such as EXEs, DLLs, Drivers, and Resources Libraries and includes the extra tables the loader needs to relocate the images in the running process tables. It otherwise shares many structures with COFF, but they are different formats.