编辑:我知道有类似的问题,但我找不到以下问题的答案:为什么类内部的方法工作正常,而外部的方法却没有。
我有一个奇怪的问题在我的项目,我正在开发的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()
{
...
}
不会。