错误LNK2019:无法解析的外部符号 - 未见问题的实例

问题描述:

Im有错误LNK2019:无法解析的外部符号问题。错误LNK2019:无法解析的外部符号 - 未见问题的实例

我有2个文件,并将它们移动到共享位置,因此2个不同的项目可以使用类。 这里还有其他类。

的问题是,当我从项目之一的主调用类的即时得到

error LNK2019: unresolved external symbol "public: __thiscall CProcessCommandLine::~CProcessCommandLine(void)" ([email protected]@[email protected]) referenced in function _main 
error LNK2019: unresolved external symbol "public: bool __thiscall CProcessCommandLine::Wait(void)const " ([email protected]@@QBE_NXZ) referenced in function _main 
error LNK2019: unresolved external symbol "public: class std::vector<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::allocator<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > const & __thiscall CProcessCommandLine::getTargetNamesVect(void)" ([email protected]@@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@[email protected][email protected][email protected]@[email protected]@[email protected]@[email protected]@[email protected]@@[email protected]@[email protected]@XZ) referenced in function _main 
error LNK2019: unresolved external symbol "public: __thiscall CProcessCommandLine::CProcessCommandLine(void)" ([email protected]@[email protected]) referenced in function _main 

当我打开的功能之一的头文件,右键点击并进入去定义它不会转到.cpp中的定义。当我右键点击.cpp中的一个函数,并说定义它说“符号没有定义”。

任何人都知道为什么会发生这种情况?无论是.H和.cpp是在相同的位置和该位置是在附加包含该项目的目录

编辑:

在其他文件中存在此文件夹中的以下代码:

#ifdef PROJ1 
#include "class1.h" 
#elif PROJ2 
#include "class2.h" 
#endif 

我以前从未见过这些东西。它们用于代码中,但仅用于包含正确的头文件,具体取决于使用哪个项目。以上内容位于此文件夹中其他类的.cpp文件中。所以我把它放在这里。但是在其他类中,它不属于的项目是灰色的。当我将它放入.h时,它将正确的标题灰色化。但由于某些原因,这个.cpp并未被视为该项目的一部分。

+1

我不认为你是链接对象/库是你吗? – trojanfoe 2012-04-17 12:29:50

+0

也许不是。在编译/链接过程中一起完成了所有其他任务,但显然不是。对象/库在哪里? – discodowney 2012-04-17 12:56:13

如果你的函数属于不同的模块比你正在构建的一个,你必须导出类:

#ifdef THIRD_MODULE 
#define DLLIMPEXP _declspec(dllexport) 
#else 
#define DLLIMPEXP _declspec(dllimport) 
#endif 

class DLLIMPEXP CProcessCommandLine 
{ 
    //... 
}; 

您构建定义与界定THIRD_MODULE此类项目。

该项目将生成.lib文件,您必须将其添加到主项目的链接器设置中的其他依赖项。

+0

我编辑了原帖。 – discodowney 2012-04-17 12:51:06

+0

@discodowney你的编辑不会影响我的答案。 'cpp'文件只是一个项目的一部分(或者至少应该是)。 – 2012-04-17 12:55:27

+0

我在这里很可怕。为什么头文件好吗? – discodowney 2012-04-17 13:11:01