Hvad er dll-filnavnet på standard c-biblioteket på Windows?

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg bruger libffi til at indlæse dll'er på runtime på flere platforme. De korrekte systemstier søges automatisk, jeg skal bare vide, hvad navnet på systemet dll er på Microsoft platformen, der indeholder standard c-bibliotekets funktioner.

Bedste reference


Windows skibe med en C runtime i msvcrt.dll. Hvis du skriver et selvstændigt program og ønsker at ringe til funktioner fra C-standardbiblioteket, så er det måske det, du har brug for.


Hvis dit program bruger biblioteker, der er koblet til andre C runtimes, vil det ikke være godt for dig. Men i så fald behøver du ikke gøre noget særligt, da din compiler/linker vil gøre C-standardbiblioteket tilgængeligt.


Hvis du vil ringe til funktioner i en C-runtime, der bruges af en af ​​de DLL'er, du læser, er det et problem. Runtiden kan forbindes statisk, eller det kan være en af ​​mange forskellige dynamiske runtider.

Andre referencer 1


I modsætning til Linux og Unix-lignende systemer har Windows ikke en 'naturlig' kompilatorværktøjskæde indbygget, og dermed ingen C-bibliotek. Hver kompilator skal sende sin egen. Microsofts egen MSVC-forbindelse til et dynamisk bibliotek som msvcrtxxx.dll (med en slags versionering; nyere versioner af Windows leveres med en version af dette); hvis du kompilerer med GCC, har du en C runtime for den compiler et eller andet sted at du skal sende (eller link statisk med -static-libgcc).


Tilsvarende findes der ikke et centralbiblioteksbibliotek, der er beslægtet med /usr/lib eller et stærkt versionsprogram, og så typiske Windows-applikationer ofte ender med at forsendelsen opretter dynamiske biblioteker hver for sig.


(Kerneplatformkomponenterne i Windows er Windows API-biblioteker som Kernel32.exe, GDI.exe og User.exe, som enhver C-kompilator, der har Windows API-overskrifterne, kan linke imod.)