使用OpenCV的架构x86_64的未定义符号

Undefined symbols for architecture x86_64 using OpenCV

本文关键字:未定义 符号 OpenCV 使用 x86      更新时间:2023-10-16

我得到这个错误,我已经阅读了其他相关的帖子,但仍然找不到解决方案。

在编译时,我得到这个错误。我正在使用opencv框架和我自己的额外c++类。

Undefined symbols for architecture x86_64:
  "Person::detectedPersonInImage(cv::CascadeClassifier, cv::Mat, double, int, int)"

在.mm实现文件中,我使用c++静态方法,如下所示,

cv::Mat matImage = [image CVMat];
matImage = Person::detectedPersonInImage(cascade, matImage, scale, min_neighbors, max_size);

在Person标题中,

static cv::Mat detectedPersonInImage(cv::CascadeClassifier cascade, cv::Mat image, double scale, int min_neighbors,
                                    int max_size);

在Person.cpp文件中

static cv::Mat detectedPersonInImage(cv::CascadeClassifier cascade, cv::Mat image, double scale, int min_neighbors,
                                    int max_size)
{
    //Work done here.
    return image;
}

有什么办法可以解决这个问题吗?

问候,c .

在Person页眉中,应该有如下内容

class Person { // or struct Person
    static cv::Mat detectedPersonInImage(cv::CascadeClassifier cascade, cv::Mat image, double scale, int min_neighbors,
                                    int max_size);
// other things...
}

在Person.cpp文件中,应该有如下内容

// no static, add Person::
cv::Mat Person::detectedPersonInImage(cv::CascadeClassifier cascade, cv::Mat image, double scale, int min_neighbors,
                                    int max_size)
{
    //Work done here.
    return image;
}