链接错误:从引用文件创建对象时未解析的外部符号

时间:2014-10-17 14:02:48

标签: c++ visual-c++ visual-studio-2013

我有两个项目的解决方案:项目A和项目B.我从项目B引用项目A(项目B是项目A的测试项目)。当我尝试从项目A中的类创建项目B中的对象时,我收到了链接错误。

示例代码:

//SampleClass.h, In Project A
#include <string.h>

class CSampleClass
{
public:
    CSampleClass(std::wstring arg1, int arg2);
    ~CSampleClass();
}

//Test.h, in Project B

class CTest
{
public:
    CTest(void);
    ~CTest(void);
    bool Run(void);
}


//Test.cpp, in Project B
#include "SampleClass.h"

CTest::CTest(void)
{
}

CTest::~CTest(void)
{
}

bool CTest::Run(void)
{
    CSampleClass sample; <--------- This line makes the error happen
}

//B.cpp, in Project B
#include "Test.h"

int main(int argc, wchar_t * argv[])
{
    CTest test;
    test.Run();
}

构建期间抛出的错误:

Error   3   error LNK1120: 2 unresolved externals   C:\Users\me\Project\Debug\ProjectB.exe  1   1 ProjectB
Error   1   error LNK2019: unresolved external symbol "public: __thiscall CSampleClass::CSampleClass(class std::basic_string<wchar_t,struct std::char_traits<wchar_t>,class std::allocator<wchar_t> >,int)" (??0CSampleClass@@QAE@V?$basic_string@_WU?$char_traits@_W@std@@V?$allocator@_W@2@@std@@W4int) referenced in function "public: virtual bool __thiscall CTest::Run(void)" (?Run@CTest@@UAE_NXZ)   C:\Users\me\ProjectB\Test.obj   ProjectB
Error   2   error LNK2019: unresolved external symbol "public: virtual __thiscall CSampleClass::~CSampleClass(void)" (??1CSampleClass@@UAE@XZ) referenced in function "public: virtual bool __thiscall CTest::Run(void)" (?Run@CTest@@UAE_NXZ)  C:\Users\me\Project\ProjectB\Test.obj   Project B

其他信息:

我正在引用项目B中的项目A,如下所示:

要在项目B中包含项目A中的文件,我将项目A的源目录添加到项目B的Configuration Properties > C/C++ > Additional Include Directories

下的属性页面

项目的目录结构如下:

\Projects\
--Debug\
----ProjectAOutput.* //.obj;.pdb;.sbr;.exe; etcetera
--ProjectB\
----Debug\
------ProjectBOutput.*//.obj;.pdb;.sbr;.exe; etcetera
----ProjectBSourceFiles.*
----ProjectBVisualStudioProjectFiles.*
--ProjectASourceFiles.*//.h;.cpp;
--ProjectAVisualStudioProjectFiles.*

问题:

我怀疑我必须将项目A的源目录添加到&#34;其他包含&#34;在项目B的属性部分,我还必须将包含项目A的构建输出的目录添加到项目B的属性中。然而,我无法找到它。

有谁知道要在一个项目中使用另一个项目的课程需要做些什么?

0 个答案:

没有答案