C++ 在解决方案中链接失败

C++ 在解决方案中链接失败,c++,visual-c++,linker,static-linking,C++,Visual C++,Linker,Static Linking,编辑:我知道有类似的问题,但我找不到以下问题的答案:为什么类内的方法工作正常,而类外的方法工作不正常 我在MSVC++2012中开发的项目中遇到了一个奇怪的问题。我的项目由不同的代码模块组成。从问题的角度来看,重要的模块是一个库和GUI。它们作为不同的项目存在于同一个解决方案中。 我在库中有一些方法,它们是类的一部分(在本例中为Calibration3D): 当我在GUI中需要它时,我使用它没有问题,但是我需要使用以下方法(类外): 但是,当我尝试使用该函数时(在类之外但在同一命名空间中),我会

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

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

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

但是,当我尝试使用该函数时(在类之外但在同一命名空间中),我会遇到以下错误:

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

有人知道如何解决它吗?

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

cci::xxxyyy() 
{ 
... 
} 
将工作和

xxxyyy() 
{ 
...
} 

不会

当我有这样的头文件时:

namespace xyz {
  void foo();
  class bar { ... };
}
#include "xyz.h"
namespace xyz {
  void foo() { ... }
  bar::bar() { ... }
}
然后我像这样写cpp文件:

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

这意味着我必须在名称空间方面少打字,少犯错误。

可能重复我读过另一个主题,而且我知道有很多理论上的讨论。问题是,课堂内的方法有效,而课堂外的方法无效!是的,在定义函数时,必须确保它是在声明的名称空间中定义的(否则它是两个不同的函数)。您可以执行以下操作:
void cci::xxxyyy(){
,或
namespace cci{void xxxyyy(){