【发布时间】:2014-11-28 04:45:57
【问题描述】:
编辑:我相信我的问题是因为我从 .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: __thiscall 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)
有什么想法吗,伙计们?谢谢!
【问题讨论】:
标签: c++ dll unresolved-external