28

I am fairly familiar with Windows and Linux libraries compilation but as for today when I have seen MinGW on my Windows machine threw out dll.a and .a files after OpenCV compilation I have started to seriously start thinking.

These are my \lib output from 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

And my \bin output :

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

(I obviously have more binaries but there is no sense in listing it here)

Can someone tell me if these are normal static libraries that I can link against ? and how should I link against them ?

Patryk
  • 22,602
  • 44
  • 128
  • 244
  • i have seen exactly the same thing when cross building libusb for win32 on a linux box. i don't think the .ddl.a is pointing to the .dll as having the linker pointing to the file in the /lib dir when trying to link another build to it results in a heap of undefined reference errors.. – bph Feb 02 '15 at 13:18
  • 1
    Possible duplicate of [What's a ".dll.a" file?](http://stackoverflow.com/questions/185326/whats-a-dll-a-file) – Kijewski Sep 06 '16 at 11:53

1 Answers1

24

.a files are static libraries. .dll.a files are files that just help you link against a dll (which is a dynamic library). My guess is that your dll contains everything, and the dll.a files just point to the dll.

Matthew Talbert
  • 5,998
  • 35
  • 38