Ich habe ein Projekt, das zu einem halben Dutzend Bibliotheken, darunter OpenCV verbindet.
Da Release-Version abstürzt, während Debug funktioniert gut (nur viel langsamer), wollte ich mein Projekt in RelWithDebInfo
Konfiguration zu kompilieren.
Allerdings wird Debug
Version der OpenCV-Bibliotheken statt Release
(OpenCV hat keine RelWithDebInfo
Variante) enthalten. Dies verursacht Fehler Verknüpfung wie:CMake RelWithDebInfo Links zu Debug-Bibliotheken
opencv_core249d.lib (alloc.obj): Fehler LNK2038: Nichtübereinstimmung erkannt für 'Runtimelibrary': value 'MDd_DynamicDebug' Wert nicht übereinstimmt 'MD_DynamicRelease' in MyProject.obj
Wie löst man dieses Problem?
Ich löse dies, indem ich nie das INSTALL-Ziel in Windows verwende. Richten Sie stattdessen die PROJECTNAME_DIR-Variablen auf den Stammordner, in dem Sie die Bibliothek erstellt haben. Ich baue auch alle Abhängigkeiten mit dem Compiler, den ich verwende, und verwende niemals Binärpakete. Wenn Sie opencv von der Quelle erstellen, wird die RelWithDebInfo-Konfiguration trotzdem entfernt? – drescherjm
Ich habe OpenCV aus der Quelle gebaut. Ich hatte dieses Problem mit vorkompiliertem OpenCV nicht. –