我有一个名为Metadata的类,它在namespace A::B::C
中声明,它还包含struct copyInfo
,其中包含有关元数据的信息。
因此,元数据只有默认的构造函数/析构函数,当我尝试使用Metadata中的成员函数时
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
我有:
该函数是从名为wrapperMetadataImport
的包装器c ++函数调用的,该函数属于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
。有什么想法吗?
答案 0 :(得分:0)
这是链接器错误,表示无法找到该函数的实现。您没有编写该函数,或者您没有在构建中包含包含它的源文件。
您已在类定义中声明,但如果没有完整的定义,则无法调用该函数。