opencv visual-c++ opencv3.0

error ''símbolo externo no resuelto'' al vincular con OpenCV 3.0



visual-c++ opencv3.0 (1)

Aquí los pasos para usar OpenCV 3.0.0 con bibliotecas precompiladas, para un proyecto C ++ que vincula estáticamente a OpenCV, en Windows (probado con Windows 8.1) y Visual Studio (probado con Visual Studio 2013) para ejecutar este programa:

#include <opencv2/opencv.hpp> using namespace cv; int main() { Mat3b img = imread("path_to_image"); imshow("img", img); waitKey(); return 0; }

  1. Descargar desde http://opencv.org/downloads.html
  2. Extraer
  3. Llamemos a OPENCV_DIR el directorio que contiene:
    • construir
    • fuente
  4. Crea un proyecto vacío:
    • Proyecto nuevo -> Visual C ++ -> Proyecto vacío
  5. Agregue un archivo cpp (digamos Start.cpp) que contendrá su función principal (por ejemplo, el fragmento anterior)
  6. Configuración DEPURACIÓN
  7. Agregue directorios include y lib:
    • Propiedades de configuración -> Directorios VC ++
    • Incluir directorios: agregar OPENCV_DIR / build / include
    • Directorios de la biblioteca: agregue OPENCV_DIR / build / x86 / vc12 / staticlib
  8. Agregue las bibliotecas requeridas (las siguientes son buenas para este ejemplo simple, debe agregar más si necesita otras funcionalidades):

    • opencv_core300d.lib
    • opencv_highgui300d.lib
    • opencv_imgproc300d.lib
    • opencv_hal300d.lib
    • opencv_imgcodecs300d.lib
    • libjpegd.lib;
    • libpngd.lib
    • libjasperd.lib
    • IlmImfd.lib
    • libtiffd.lib
    • libwebpd.lib
    • zlibd.lib
    • ippicvmt.lib
    • %(Dependencias adicionales)
  9. Propiedades de configuración -> C / C ++ -> Generación de código -> Biblioteca de tiempo de ejecución

    • Establecer en Depuración de subprocesos múltiples (/ MTd)
  10. Para una compilación de LIBERACIÓN, debe realizar los pasos del 6 al 9 en el modo de lanzamiento, agregar libs sin la "d" final en el paso 8, y Multi thread (/ MT) en el paso 9.

  11. ¡Disfrutar!

Como beneficio adicional, también recomiendo instalar la extensión Image Watch para Visual Studio. ¡Muy, muy útil para depurar tus Mat s!

Construyo el OpenCV 3.0 desde la fuente. Y con el repositorio contrib para algunos módulos adicionales. Y configuré manualmente mi proyecto VS2013 para usar los archivos lib generados.

Mi código es simple por ahora:

#include "opencv2/core/core.hpp" #include "opencv2/imgcodecs/imgcodecs.hpp" int _tmain(int argc, _TCHAR* argv[]) { cv::Mat image = cv::imread("img.jpg"); return 0; }

Pero me dio estos errores cuando en la versión de comunidad VS 2013:

Veo un hilo similar , dijeron que es causado por el problema x86 / x64. Pero mi proyecto ya es x86. Y el OpenCV que construí también está dirigido a x86 (ver más abajo). ¿Qué razón podría ser?

AGREGAR 1

El proyecto INSTALL OpenCV 3.0 genera el siguiente directorio lib:

Por lo tanto, es una x86 .

Mi ruta lib está configurada para la ruta anterior:

Y agregué todos los archivos *d.lib .

Y a continuación se muestra el Configuration Manager mi proyecto VC

Por lo tanto, también es x86 .

¿Dónde podría estar mal?

AGREGAR 2

Busqué manualmente la función fastFree() . Se define en el archivo opencv_core300d.lib . Uso el dumpbin /symbols para verificar los símbolos. Y encuentro que su nombre está destrozado exactamente como fastFree@cv@@YAXPAX@Z Entonces, ¿por qué no se puede encontrar?