编辑:我相信我的问题是因为我正在从.exe项目中调用FacePoint类,而FacePoint实际上位于.dll项目中,两者都在同一解决方案中。有什么想法可以解决吗?

我有一个名为FacePoint的类,该类获取并设置面部特征的X和Y值。

这是FacePoint.h:

 #pragma once
class FacePoint
{
public:
    FacePoint(void);
    FacePoint(int X, int Y);

    void FacePoint::SetX(int X);
    void FacePoint::SetY(int Y);
    void FacePoint::SetXY(int X, int Y);

    int FacePoint::GetX();
    int FacePoint::GetY();

    ~FacePoint(void);

 private:
    int coordX;
    int coordY;
};

...和FacePoint.cpp:
#include "StdAfx.h"
#include "FacePoint.h"

FacePoint::FacePoint(void)
{
    coordX = 0;
    coordY = 0;
}

FacePoint::FacePoint(int X, int Y)
{
    coordX = X;
    coordY = Y;
}

void FacePoint::SetX(int X){ coordX = X; }

void FacePoint::SetY(int Y){ coordY = Y; }

void FacePoint::SetXY(int X, int Y)
{
    coordX = X;
    coordY = Y;
}

int FacePoint::GetX(){ return coordX; }

int FacePoint::GetY(){ return coordY; }

FacePoint::~FacePoint(){}

这对我来说似乎可以,但是当我尝试实现FacePoint对象的 vector 时,如下所示:
    std::vector<FacePoint> point;
    result = GetFeaturePoints(pHandle, &point);
    int x = 0;
    int y = 0;
    for(int p = 0; p < point.size(); p++)
    {
        x = point[p].GetX();
        y = point[p].GetY();
    }

我收到以下编译时错误:



我不确定为什么会这样,但是从错误消息中,我怀疑这与我的析构函数有关?

我四处搜寻,其中大多数问题都与缺少构造函数/析构函数定义有关。据我所知,我的构造函数看起来不错,并且错误消息似乎暗示了析构函数。我能想到的唯一一件事就是我缺少一个销毁int X,int Y的解扰器,但我认为原语不需要吗?...

任何帮助表示赞赏。谢谢!!

编辑:所以我忘了在我的主文件夹中创建“FacePoint.h”(在其中创建FacePoint的 vector )。我在其中添加了该内容,但是正在收到此编译时错误消息:



知道吗,伙计们?谢谢!

最佳答案

看来FacePoint.cpp不是您的项目的一部分。这意味着链接器找不到实现这些功能的代码体。

10-06 04:05