提问者:小点点

体系结构X86_64的未定义符号:


接口:

class rmKeyControl {
    static map<char, function<char(char)>> sm_function_list;
public:
    static bool addKeyAction(char, function<char(char)>);
};

实施:

bool rmKeyControl::addKeyAction(char key, function<char(char)> func) {
    if (!sm_function_list.count(key)) {
        sm_function_list.insert(pair<char, function<char(char)>>(key, func));
        return true;
    } return false;
}

完整的错误消息为:

体系结构x86_64的未定义符号:“control::RMKeyControl::SM_Function_List",引用自:rm_KeyControl::AddKeyAction(char,std::__1::function)中的:control::RMKeyControl::AddKeyAction(char,std::__1::function)。o ld:找不到体系结构x86_64的符号clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

这似乎是Xcode4的一个标准链接器错误,但它的发生似乎有各种各样的原因,而且它从来没有详细说明。这个错误似乎表明存在不能在x86_64体系结构上工作的二进制指令,但是在这种情况下这是没有意义的。为什么我会出现这个错误?

编辑:我忘了提到在名称空间中。我在实现中是,尽管您看不到它。


共1个答案

匿名用户

静态成员只是声明。在实现/源文件中定义它,如-

// include interface header and then do -
map<char, function<char(char)>> rmKeyControl::sm_function_list;