Sådan opbygges OpenCV 3.2.0 med MinGW på Windows

Indlæg af Hanne Mølgaard Plasc

Problem



Dette indlæg indeholder alle de problemer, jeg (og andre brugere) havde, da jeg byggede biblioteket fra kilder. Da der ikke er nogen vejledning, besluttede jeg at oprette denne slags FAQ-post for at sætte alle løsninger sammen. Håber det vil hjælpe!


Konfiguration:

OpenCV 3.2.0

MinGW-w64 x86\_64-6.1.0-win32-seh-rt\_v5-rev0


Du er velkommen til at tilføje flere oplysninger i svarene, da det er mere praktisk at have alt på ét sted.

Bedste reference



  1. Download og pakk OpenCV til en mappe efter eget valg.

  2. opencvsources indeholder nu CMakeLists.txt og alle de andre filer, der er nødvendige. Konfigurer projektet i CMake. CLion-brugere kan bare åbne CMakeLists.txt.



    • Fix 1 : sprintf () familie sikkerhedsfejl.

      Tilføj add\_definitions(-DSTRSAFE\_NO\_DEPRECATE) til begyndelsen af ​​CMakeLists.txt. Dette vil definere STRSAFE\_NO\_DEPRECATE symbolet for projektet og undertrykke fejlen.

    • Fix 2 : 'for mange sektioner' as.exe fejl.

      Tilføj følgende linjer til begyndelsen af ​​CMakeLists.txt (kilde):


      set(CMAKE\_CXX\_FLAGS ${CMAKE\_CXX\_FLAGS} "-Wa,-mbig-obj")
      set(CMAKE\_C\_FLAGS ${CMAKE\_C\_FLAGS} "-Wa,-mbig-obj")
      

    • Fix 3 : 'Det sidste argument skal være en 8-bit øjeblikkelig'.

      Fandt ikke noget bedre end hardcoding 0x88 i stedet for mask\_lo = \_MM\_SHUFFLE(2, 0, 2, 0) (binært 10 00 10 00) og 0xDD i stedet for mask\_hi.

      Så snart får mit spørgsmål et bedre svar, vil jeg opdatere dette afsnit.

    • Fix 4 : nej c + + 11 thread s i MinGW.

      Igen, en beskidt løsning: tilføjet #include <mingw.*.h> til <mutex>, <thread>, <condition\_variable> før #endif // C++11. ( Kilde)


  3. Byg det! Det tager ca. 30-40 minutter.

  4. Find output-mappen. Det er stadig et rod, men indeholder en Makefile.

    Start cmd, cd til output-mappen og ring til [path to compiler]mingw32-make.exe install. ([30] Kilde)

  5. Voila, dit bibliotek er i mappen install! Nu kan du flytte det til en ønsket destination og oprette miljøvariabler.