连接解决方案中的故障

Linking failure within solution

本文关键字:故障 解决方案 连接      更新时间:2023-10-16

编辑:我知道有类似的问题,但我找不到以下问题的答案:为什么类内部的方法工作正常,而外部的方法却没有。

我有一个奇怪的问题在我的项目,我正在开发的msvc++ 2012。我的项目由不同的代码模块组成。从问题的角度来看,重要的模块是库和GUI。它们作为不同的项目存在于同一个解决方案中。我在库中有一些方法是类的一部分(在这种情况下是Calibration3D):

void Calibration3D::load(const std::string &path)

当我在GUI中需要它时,我使用它没有问题,但是我需要使用以下方法(在类之外):

void xxxyyy() 

但是当我试图使用该函数(类外,但在相同的命名空间),我得到以下错误:

1>project_xml.obj : error LNK2001: unresolved external symbol "void __cdecl   cci::xxxyyy(void)" (?xxxyyy@cci@@YAXXZ) 1>D:praca_pwccibuild-msvc2012x64Release\ccigui.exe : fatal error LNK1120: 1 unresolved externals

有人知道怎么解吗?

当我有一个这样的头文件:

namespace xyz {
  void foo();
  class bar { ... };
}

然后我像这样写cpp文件:

#include "xyz.h"
namespace xyz {
  void foo() { ... }
  bar::bar() { ... }
}

这意味着我必须输入更少的内容,并且在名称空间方面犯更少的错误。

好的,解决了,似乎当一个方法在头文件的命名空间内定义时,它也应该在实现文件中明确定义为命名空间的一部分,在这种情况下:

cci::xxxyyy() 
{ 
... 
} 

可以工作,

xxxyyy() 
{ 
...
} 

不会。