c - Skrivning af en GCC-kompatibel indpakning omkring en .lib-fil

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg har for nylig modtaget en lukket kilde SDK bestående af en C header fil (.h), en biblioteksfil (.lib) og et dynamisk bibliotek (.dll). De blev compileret ved hjælp af Microsofts Visual C ++, men jeg forsøger at skrive min kode ved hjælp af MinGW (GCC portet til Windows, for alle der ikke er bekendte med projektet). Det ser ud til, at ld ikke kan linke til .lib fil. Jeg spekulerede på, om det var muligt at skrive et kompatibilitetsindpakning mellem VS-kompileret kode og GCC-koden, jeg skrev.

Bedste reference


Er der en ABI-fejlpasning, eller vil det bare ikke linkes til objektformatet? Hvis det kun er et sammenkædende problem, kan du udtrække de funktioner, du er interesseret i, adskille dem og derefter sætte dem sammen igen i et objekt, som din linker kan klare. Endnu nemmere kan måske objcopy(1) tale begge formater og hjælpe dig ud? [6]


Hvis du har et ABI-problem at håndtere, kan du gøre det samme, men også tilføje et shim-lag til at dæmpe ABI, så funktionsopkaldene virker. Hvor kompliceret det lag er, og hvor svært det bliver at skrive, afhænger af grænsefladerne for de funktioner, du forsøger at bruge.


Må ikke blive modløs af kommentarerne - det er software, så meget alt er muligt.