我在我的项目中遇到了一个奇怪的问题,我在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_pw\cci\build-msvc2012\x64\Release\\ccigui.exe : fatal error LNK1120: 1 unresolved externals
有人知道怎么解决吗?
答案 0 :(得分:2)
当我有这样的头文件时:
namespace xyz {
void foo();
class bar { ... };
}
然后我写这样的cpp文件:
#include "xyz.h"
namespace xyz {
void foo() { ... }
bar::bar() { ... }
}
这意味着我必须输入更少的内容并减少名称空间方面的错误。
答案 1 :(得分:0)
好的,解决了,似乎当在头文件中的命名空间内定义一个方法时,它也应该在实现文件中明确定义为命名空间的一部分,在这种情况下:
cci::xxxyyy()
{
...
}
将起作用
xxxyyy()
{
...
}
不会。