error LNK2019 ARuco and OpenCV VS2010 c++

error LNK2019 ARuco and OpenCV VS2010 c++

本文关键字:VS2010 c++ OpenCV and LNK2019 ARuco error      更新时间:2023-10-16

我是OpenCV e VS2010的新手。我在Windows7 x64上工作。 我想检测一个标记,所以我从这个网站下载了 ARuco 库:我写了这个简单的代码:

#include <iostream>
#include <stdio.h>
#include "C:/Users/Cristina/Desktop/OpenCV/dep/aruco/src/aruco.h"
#include "C:/Users/Cristina/Desktop/OpenCV/dep/aruco/src/cvdrawingutils.h"
#include "C:/Users/Cristina/Desktop/OpenCV/dep/aruco/src/cameraparameters.hpp"
#include "C:/Users/Cristina/Desktop/OpenCV/opencv/include/opencv/cv.h"
#include "C:/Users/Cristina/Desktop/OpenCV/opencv/include/opencv/highgui.h"
#include "C:/Users/Cristina/Desktop/OpenCV/opencv/modules/imgproc/include/opencv2/imgproc/imgproc.hpp"
#include "C:/Users/Cristina/Desktop/OpenCV/opencv/modules/highgui/include/opencv2/highgui/highgui.hpp"
#include "C:/Users/Cristina/Desktop/OpenCV/opencv/modules/core/include/opencv2/core/core.hpp"
using namespace cv;
using namespace aruco;
int main() {
    aruco::CameraParameters CamParam;
    aruco::MarkerDetector MDetector;
    vector <Marker> Markers;
    cv::Mat img;
    img = imread("prova marker", 0);
    cv::namedWindow("originale", 1);
    cv::namedWindow("risultato", 1);
    cv::Mat risultato;
    img.copyTo(risultato);
    MDetector.detect(img, Markers, CamParam, -1);
    for (int i=0; i< Markers.size(); i++) {
        Markers[i].draw(risultato, Scalar(0,0, 255));
    }
    cv::imshow("originale", img);
    cv::imshow("risultato", risultato);
    waitKey(0);
return 0;
}

当我编译它时,我收到以下错误:

1>main.obj : error LNK2019: riferimento al simbolo esterno "public: __thiscall aruco::MarkerDetector::~MarkerDetector(void)" (??1MarkerDetector@aruco@@QAE@XZ) non risolto nella funzione _main
1>main.obj : error LNK2019: riferimento al simbolo esterno "public: void __thiscall aruco::Marker::draw(class cv::Mat &,class cv::Scalar_<double>,int,bool)const " (?draw@Marker@aruco@@QBEXAAVMat@cv@@V?$Scalar_@N@4@H_N@Z) non risolto nella funzione _main
1>main.obj : error LNK2019: riferimento al simbolo esterno "public: void __thiscall aruco::MarkerDetector::detect(class cv::Mat const &,class std::vector<class aruco::Marker,class std::allocator<class aruco::Marker> > &,class aruco::CameraParameters,float,bool)" (?detect@MarkerDetector@aruco@@QAEXABVMat@cv@@AAV?$vector@VMarker@aruco@@V?$allocator@VMarker@aruco@@@std@@@std@@VCameraParameters@2@M_N@Z) non risolto nella funzione _main
1>main.obj : error LNK2019: riferimento al simbolo esterno "public: __thiscall aruco::CameraParameters::CameraParameters(class aruco::CameraParameters const &)" (??0CameraParameters@aruco@@QAE@ABV01@@Z) non risolto nella funzione _main
1>main.obj : error LNK2019: riferimento al simbolo esterno "public: __thiscall aruco::MarkerDetector::MarkerDetector(void)" (??0MarkerDetector@aruco@@QAE@XZ) non risolto nella funzione _main
1>main.obj : error LNK2019: riferimento al simbolo esterno "public: __thiscall aruco::CameraParameters::CameraParameters(void)" (??0CameraParameters@aruco@@QAE@XZ) non risolto nella funzione _main
1>C:UsersCristinaDesktopOpenCVProgettiMIEI PROGETTIaruco markerDebugaruco marker.exe : fatal error LNK1120: 6 esterni non risolti
========== Compilazione: 0 completate, 1 non riuscite, 0 aggiornate, 0 ignorate ==========

有人可以帮助我吗?谢谢!

你需要在Visual Studio上编译Aruco来构建库。

之后,将生成的库文件复制到Visual Studio的正确库文件夹中。

最后,编辑项目的属性,并将库的名称添加为链接器的依赖项。