可能的类/析构函数设置问题,接收错误消息'未解析的外部符号'

时间:2014-10-03 05:20:17

标签: c++ dll unresolved-external

编辑:我认为我的问题是因为我从.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对象的向量时,如下所示:

    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();
    }

我收到以下编译时错误:

  

错误37错误LNK1120:3个未解析的外部

     

错误36错误LNK2001:未解析的外部符号“public:__ thishisall   FacePoint ::〜FacePoint(void)“(?? 1FacePoint @@ QAE @ XZ)

     

错误35错误LNK2001:未解析的外部符号“public:int   __thiscall FacePoint :: GetX(void)“(?GetX @ FacePoint @@ QAEHXZ)

     

错误34错误LNK2001:未解析的外部符号“public:int   __thiscall FacePoint :: GetY(void)“(?GetY @ FacePoint @@ QAEHXZ)

我不确定为什么会发生这种情况,但是从错误消息中我怀疑它与我的析构函数有关?...

我四处搜索,大部分问题都是缺少构造函数/析构函数定义。据我所知,我的构造函数似乎很好,错误消息似乎暗示析构函数。我能想到的唯一一件事是我错过了一个破坏int X,int Y的析构函数,但是我不认为原语需要它吗?...

感谢任何帮助。谢谢!!


编辑:所以我忘了#include“FacePoint.h”在我的主要部分(我正在创建FacePoint的矢量)。我添加了,但收到此编译时错误消息:

  

错误4错误LNK2019:未解析的外部符号“public:__thiscall FacePoint ::〜FacePoint(void)”(?? 1FacePoint @@ QAE @ XZ)在函数“public:void * __thiscall FacePoint ::`标量删除析构函数”中引用'(unsigned int)“(?? _ GFacePoint @@ QAEPAXI @ Z)

任何想法,伙计们?谢谢!

2 个答案:

答案 0 :(得分:1)

看起来FacePoint.cpp不属于您的项目。这意味着链接器无法找到实现这些功能的代码体。

答案 1 :(得分:0)

OP解决方案。

通过用结​​构替换类来解决。