2012-12-21 3 views
14

Ich bin ziemlich vertraut mit Windows und Linux-Bibliotheken Kompilation, aber für heute, wenn ich MinGW auf meinem Windows-Rechner dll.a und .a Dateien nach OpenCV Compilation gesehen habe, habe ich begonnen ernsthaft zu denken beginnen.MinGW Erstellen von dll.a Dateien? Welche Art von Bibliotheksdateien sind das?

Das ist meine \lib Ausgabe von OpenCV Compilation:

2012-12-21 23:35   1 338 420 libopencv_core243.dll.a 
2012-12-21 23:33   224 994 libopencv_core_pch_dephelp.a 
2012-12-21 23:38   830 820 libopencv_features2d243.dll.a 

Und meine \bin Ausgabe:

2012-12-21 23:40   356 178 libopencv_perf_core.dll.a 
2012-12-21 23:45   362 702 libopencv_perf_features2d.dll.a 
2012-12-21 23:35   4 086 052 libopencv_core243.dll 
2012-12-21 23:38   2 102 896 libopencv_features2d243.dll 

(ich natürlich mehr Binärdateien, aber es gibt keinen Sinn, es hier in Listing)

Kann mir jemand sagen, ob das normale statische Bibliotheken sind, gegen die ich verlinken kann? und wie sollte ich mich gegen sie verbünden?

+0

Ich habe genau das gleiche gesehen, wenn libusb für win32 auf einer Linux-Box gebaut wird. ich glaube nicht, dass die .ddl.a auf die .dll verweist, da der Linker auf die Datei im Verzeichnis/lib verweist, wenn versucht wird, einen anderen Build zu verknüpfen, was zu einem Haufen nicht definierter Referenzfehler führt. – bph

+0

Mögliche Duplikate von [Was ist eine ".dll.a" Datei?] (http://stackoverflow.com/questions/185326/whats-a-dll-a-file) – kay

Antwort

12

.a-Dateien sind statische Bibliotheken. .dll.a Dateien sind Dateien, die Ihnen nur helfen, mit einer DLL (die eine dynamische Bibliothek ist) zu verknüpfen. Meine Vermutung ist, dass Ihre DLL alles enthält und die dll.a-Dateien nur auf die DLL zeigen.