我在类的标题中在命名空间级别声明了几个方法:
// MyClass.h
namespace network {
int Method1(double d);
int Method2(double d);
class MyClass
{
//...
}
}
然后在
中定义//MyClass.cpp
int
Method1(double d)
{ ... }
int
Method2(double d)
{ ... }
这个项目编译干净,是使用MyClass的ui项目的依赖项。这些函数以前是MyClass的成员函数,但由于它更合适,因此被移动到命名空间。
我的问题是当ui项目到达链接器时会抱怨:
1> network.lib(MyClass.obj):错误LNK2001:未解析的外部符号“int __cdecl network :: Method1(double)”(?INT @ ds @ sim @@ YAHN @ Z)
1> network.lib(MyClass.obj):错误LNK2001:未解析的外部符号“int __cdecl network :: Method2(double)”(?CINT @ ds @ sim @@ YAHN @ Z)
我做错了什么?
答案 0 :(得分:2)
看起来您已将函数声明放在命名空间块中,但忘记将函数实现放在命名空间块中。尝试:
namespace network {
int
Method1(double d)
{ ... }
int
Method2(double d)
{ ... }
}
答案 1 :(得分:1)
您还需要将.cpp文件中的函数放入命名空间。编译器认为它们是两个完全不同的东西!