windows - Kompilering af et dynamisk forbundet bibliotek

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg forsøger nu at kompilere et dynamisk forbundet bibliotek (for et pluginsystem) ved hjælp af Windows og MinGW.


Jeg kompilerer hver genstand ved hjælp af denne kommandolinje:


mingw-g++ -fPIC test.cpp


Og biblioteket bruger denne linje:


mingw-g++ -rdynamic -shared -Wl,-soname,test.so.1 -o test.so test.o


Det virker slet ikke (ved hjælp af GCC med Linux, fungerer en lignende linje): fPIC og rdynamiske ignoreres af en eller anden grund.
Og mens jeg forsøger at lave biblioteket, fejler det, fordi kompilatoren forsøger at forbinde det med objekter, der skal løses, da jeg dynamisk linker det med de vigtigste binære.


Så hvordan kompilerer du dette ved hjælp af MinGW?


Tak :)!

Bedste reference


-fPIC og -rdynamic ignoreres, fordi de er ubrugte til Windows.


Også .so er ikke den korrekte outputudvidelse for biblioteker på Windows.


Sådan laver du et delt bibliotek til/på Windows med GCC:


mingw-g++ -c file.cpp -o file.o
mingw-g++ -shared -Wl,--out-implib,libfile.a -o file.dll file.o 


Ikke mere, ikke mindre.


Og dokumentation er altid dejlig at have: http://www.mingw.org/wiki/sampleDLL[7]