Bonjour,

je crée une dll sous g++

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
file1.dll: $(OBJECTS_DLL1)
	g++ -shared -o $@ $^ -Wl,--out-implib=libfile1.a
J'ai compris que l'option --out-implib crée le .a associé à la dll.

Cependant, quand je veux utiliser cette dll, que je compile comme ça

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
executable.exe: $(OBJECTS_MAIN)
	g++ -o $@ main.o -Wl,--enable-auto-import -L. -lfile1
ou comme ça (et du coup sans avoir besoin de l'option --out-implib=libfile1.a dans la compilation de ma dll)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
executable.exe: $(OBJECTS_MAIN)
	g++ -o $@ main.o -Wl,--enable-auto-import ./file1.dll
, j'obtiens la même chose.

Je ne comprends pas le besoin de faire un .a pour une dll (excepté que dans le premier cas, je reste compatible avec une compilation avec ou sans dll) ? Je vois bien que dans le cas d'utilisation de dll, on trouve souvent le .lib ou le .a associé, mais je ne saisis pas son intérêt.

Si quelqu'un veut bien m'expliquer la différence ? Merci.

Flo.