为什么我会收到错误LNK2001和LNK1120

Why do I get an error LNK2001 and LNK1120

本文关键字:LNK2001 LNK1120 错误 为什么      更新时间:2023-10-16

可能的重复项:
什么是未定义的引用/未解析的外部符号错误,如何解决?

我正在使用Visual Studio 2010和库OpenCV。当我尝试编译以下代码时,出现以下错误:

错误 LNK2001:未解析的外部符号"类 cv::Mat __cdecl grdX(类 cv::Mat)"(?grdX@@YA?AVMat@cv@@V12@@Z)

错误 LNK1120:1 个未解析的外部

//Includes
#include <iostream>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <math.h>
#include <vector>
#include <stdio.h>
#include <opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;
//Prototypes
Mat grdX(Mat);
Mat grdY(Mat);
int main()
{
    Mat_<uchar> mat = imread("C:/img.jpg");
    int row = mat.rows;
    int col = mat.cols;
    Mat_<uchar> f(row, col);
    f = grdX(mat);
    namedWindow ("img2", CV_WINDOW_AUTOSIZE);
    imshow ("img2", f);
    return EXIT_SUCCESS;
}

Mat grdX(Mat_<uchar> matrix)
{
    int row = matrix.rows;
    int col = matrix.cols;
    Mat_<uchar> grd(row,col);
    for (int i=1; i<=row ;i++)
        {
            for (int j=1; j<=col; j++)
            {
                if (j==1)
                {grd(i,1) = (int)matrix(i,2)-(int)matrix(i,1);}
                else if (j==col)
                {grd(i,col) = (int)matrix(i,col)-(int)matrix(i,col-1);}
                else {grd(i,j)=((int)matrix(i,j+1)-(int)matrix(i,j-1))/2;}
            }
        }
    return grd;
}
Mat grdY(Mat_<uchar> matrix)
{
    int row = matrix.rows;
    int col = matrix.cols;
    Mat_<uchar> grd(row,col);
    for (int i=1; i<=row ;i++)
        {
            for (int j=1; j<=col; j++)
            {
                if (i==1)
                {grd(1,j) = (int)matrix(2,j)-(int)matrix(1,j);}
                else if (i==row)
                {grd(row,j) = (int)matrix(row,j)-(int)matrix(row-1,j);}
                else {grd(i,j)=((int)matrix(i+1,j)-(int)matrix(i-1,j))/2;}
            }
        }
    return grd;
}

我找不到我的代码中有什么问题。

您需要在库所在的项目属性中指定。在链接器中 -->常规/输入。在您的情况下,简历库