问题:
错误LNK2019:未解析的外部符号“public:__thiscall Vector3 :: Vector3(void)”(?? 0Vector3 @@ QAE @ XZ)在函数_WinMain @ 16中引用
详情:
我有一个自定义的Vector3类,其基本构造函数Vector3()在Maths.h文件中声明:
struct Vector3
{
float x;
float y;
float z;
Vector3();
...
}
并在Maths.cpp中定义:
Vector3::Vector3()
{
this->x = 0;
this->y = 0;
this->z = 0;
}
模块“Maths”是DLL的一部分。只要我在DLL的模块中使用Vector3类就像往常一样。 然而在特定情况下,当我尝试在与DLL链接的可执行文件中定义它时,我得到了未解析的外部符号。 E.g:
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd)
{
...
Vector3 a = Vector3();
...
}
我找到了解决方法。如果我在Maths.h中执行定义并完全在Maths.cpp中省略它,就像这样:
struct Vector3
{
float x;
float y;
float z;
Vector3()
{
this->x = 0;
this->y = 0;
this->z = 0;
}
...
}
它有效。但我不知道问题是什么,以及为什么它只在这种特殊情况下表现出来。