我有两个文件让我感到非常悲痛:camAVTEx.h
和camAVTEx.cpp
。以下是两个文件的常规设置:
//.h////////////////////////////////////////////////
/*
#includes to some other files
*/
class camera_avtcam_ex_t : public camera_t
{
public:
camera_avtcam_ex_t();
virtual ~camera_avtcam_ex_t();
private:
//some members
public:
//some methods
};
void GlobalShutdownVimbaSystem();
//.cpp/////////////////////////////////////////////
#include "StdAfx.h"
#include "camAVTEx.h"
//some other #includes
camera_avtcam_ex_t::camera_avtcam_ex_t()
{
}
//rest of the class' functions
void GlobalShutdownVimbaSystem()
{
//implememtation
}
然后,在另一个目录中的文件中,我对#h文件的确切位置进行#include并尝试使用该类:
//otherfile.cpp
#include "..\..\src\HardSupport\Camera.h"
//this is the base camera class (camera_t)
#include "..\..\src\HardControl\camAVTEx.h"
//this is indeed where both the .h and .cpp files are located
void InitCam
{
camera_t* maincam = new camera_avtcam_ex_t();
}
void OnExit()
{
GlobalShutdownVimbaSystem();
}
编译时,我收到以下错误:
8> otherfile.obj:错误LNK2001:未解析的外部符号“public:__ cdecl camera_avtcam_ex_t :: camera_avtcam_ex_t(void)“(?? 0camera_avtcam_ex_t @@ QEAA @ XZ)
8> otherfile.obj:错误LNK2001:未解析的外部符号“void __cdecl GlobalShutdownVimbaSystem(void)“(?GlobalShutdownVimbaSystem @@ YAXXZ)
8> .... \ bin \ x64 \ Release \ otherfile.exe:致命错误LNK1120:2个未解析的外部
我不能为我的生活弄清楚为什么它找不到这两个函数的实现。
所以我想我的问题很明显:为什么我会收到这些错误,需要修改哪些才能修复它们?
答案 0 :(得分:0)
无论你如何看待它,你所犯的错误:unresolved external symbol "public: __cdecl camera_avtcam_ex_t::camera_avtcam_ex_t(void)" (??0camera_avtcam_ex_t@@QEAA@XZ)
意味着编译器知道符号camera_avtcam_ex_t::camera_avtcam_ex_
(这是类构造函数),因为他在camAVTEx.h
中看到了它的声明文件但halas,它无法找到(= resolve)执行此符号(简而言之,代码)。
这通常是由于几种可能的原因而发生的: