2013-01-16 100 views
1

请帮我未定义引用静态常量变量collect2:LD返回1退出状态

错误的详细信息如下:

的src/a.cpp:2972:未定义的引用`B :: XTT collect2:ld返回1退出状态

B::XTTB结构中的静态常量变量。

2969  if (index != B::XTT) { 
2970   index_map_iter = lookup_index.find(merchandising_index); 
2971   merchandising_index = index_map_iter != output_index.end() ? \ 
2972    index_map_iter->second : B::XTT; 

这是非常奇怪的是,我第一次上线2969使用B::XTT,也不会产生错误。但在2972我用B::XTT,并产生一个错误。

如果我添加-O2选项时,我用g++命令,也不会产生错误。 但它确实产生错误没有-O2

+2

定义了B :: XTT吗?不只是在类定义中初始化,而是实际定义的? –

+0

链接器通常不超过列出每个文件未定义的符号引用更多。与编译时不同,一个错误消息就足以告诉你缺少什么。 – molbdnilo

+0

非常感谢。我在你的帮助下解决了这个问题。再次感谢。 – user1983474

回答

2

在声明静态常量成员变量

class foo { 
    // omitted other members 
    static int MyConst; 
}; 

你有一个编译单元来定义它。

int foo:MyConst = 42; 
+0

非常感谢! – user1983474

相关问题