我有一个名为 Metadata 的类,它在 中声明namespace A::B::C
,它还包含struct copyInfo
,它保存有关元数据的信息。所以,元数据只有它的默认构造函数/析构函数,当我尝试使用来自元数据的成员函数时,调用
importMetadata(vector<copyInfo> &info, const string &src, const string &dst, const int &job:
我收到以下错误:
import_helper.cpp:(.text+0x246): undefined reference to
A::B::C::Metadata::importMetadata(std::vector<A::B::C::copyInfo, std::allocator<A::B::C::copyInfo> >&,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&,
std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int const&)
namespace A{
namespace B{
namespace C{
class Metadata{
Metadata();
~Metadata();
importMetadata(vector<copyInfo> &seq, const string &src,
const string &dst, const int &job);
/* more code down here */
};
}
}
}
现在,在Metadata
我有:
该函数是从一个名为 的包装 C++ 函数调用wrapperMetadataImport
的,该函数属于import_helper.cpp
.
#include "Metadata.h"
using namespace A::B::C;
int wrapperMetadataImport(const char * src, const char * dest, const int * jobid){
Metadata mtd;
string src = srcName;
string dest = destName;
vector<copyInfo> sequence;
/* add elemens to the vector sequence */
if((ret = mtd.importMetadata(sequence,
src, dest, *jobid)) == EC_success){
/* more code down here */
我不知道为什么会这样。我检查了 .h 和 .cpp 文件,对我来说一切正常。我想这是一个运行时链接问题。命名空间应该是:A::B::C
. 有什么想法吗?