无法解决错误LNK2019:未解析的外部符号

时间:2012-07-11 09:51:03

标签: c++ visual-studio-2008 lnk2019

我在Visual Studio中有一个解决方案,它有2个项目,即PAL_TEST和Unit_Test。
我在PAL_TEST,CPALResponse.h

中有一个班级
#include "CFW_Stl.h"

class CPALResponse
{
  public:
    void SetCommandSucceeded(bool bCommandSucceeded = false);
    bool GetCommandSucceeded();
    void SetCommandType(int nCommandType);
    int GetCommandType();

  private:
    bool m_bCommadSucceeded;
    int m_nCommandType;
};

PAL_TEST CPALResponse.cpp中的另一个文件

#include "stdafx.h"
#include "CFW_CPALResponse.h"

void CPALResponse::SetCommandSucceeded(bool bCommandSucceeded)
{
    m_bCommadSucceeded = bCommandSucceeded;
}
bool CPALResponse::GetCommandSucceeded()
{
    return m_bCommadSucceeded;
}
void CPALResponse::SetCommandType(int nCommandType)
{
    m_nCommandType = nCommandType;
}
int CPALResponse::GetCommandType()
{
    return m_nCommandType;
}

Unit_Test中有一个文件Unit_Test.cpp,

#include "stdafx.h"
#include "../PAL_TEST/CFW_CPALResponse.h"

int _tmain(int argc, _TCHAR* argv[])
{
    CPALResponse a;
    a.SetCommandSucceeded(true);
    return 0;
}

当我构建Unit_Test项目时,它会显示我

1>------ Build started: Project: Unit_Test, Configuration: Debug Win32 ------
1>Linking...
1>Unit_Test.obj : error LNK2019: unresolved external symbol "public: void __thiscall CPALResponse::SetCommandSucceeded(bool)" (?SetCommandSucceeded@CPALResponse@@QAEX_N@Z) referenced in function _wmain
1>C:\Users\anubhav.a\Documents\Visual Studio 2008\Projects\PAL_TEST\Debug\Unit_Test.exe : fatal error LNK1120: 1 unresolved externals
1>Build log was saved at "file://c:\Users\anubhav.a\Documents\Visual Studio 2008\Projects\PAL_TEST\Unit_Test\Debug\BuildLog.htm"
1>Unit_Test - 2 error(s), 0 warning(s)

我不清楚消息的含义以及如何解决错误

1 个答案:

答案 0 :(得分:0)

这是通常的检查表,您的问题就是其中之一:

  • 您不是使用declspec(dllexport)导出类,也不是使用declspec(dllimport)在调用项目中导入它们。

  • 确保使用实现编译文件。

  • 确保使用该类的项目链接到第一个项目生成的.lib