我有两个项目的解决方案:项目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的属性中。然而,我无法找到它。
有谁知道要在一个项目中使用另一个项目的课程需要做些什么?