我在cygwin上使用g ++(5.4.0)来编译和链接一些cpp文件。编译很顺利,但在链接期间我遇到很多错误,如:
lib.a: warning: COMDAT symbol '.pdata$_ZnwmPv' does not match section name '.pdata'
lib.a: warning: COMDAT symbol '.xdata$_ZnwmPv' does not match section name '.xdata'
我无法弄清楚此消息的含义,也无法解决问题的解决方法。我尝试了谷歌搜索,并获得此链接:https://sourceware.org/bugzilla/show_bug.cgi?id=15041 这似乎表明问题已经修复并在2013年重新检查过。
我的错误消息是否意味着此修复程序在cygwin的gcc中不可用?或者我还需要做些什么来解决/绕过这个问题?
另外,有什么方法可以获得更多关于错配究竟是什么的细节吗?这可能表明我需要在代码中修复的内容。
更多细节:警告只发生在cygwin中,而不是发生在ubuntu中,所以我也在这个问题上添加了cygwin标签,并在问题中也提到了cygwin。它只在我将以下代码添加到我的类时才会发生。如果删除 addObject2 方法,并且私有成员 _obj2Array 被公开并且其代码被移动到应用程序,则警告将消失。
myObject1.h:
class myObject1: public myParent {
... // constructors, etc
vector<myObject2*> _obj2Array;
public:
void addObject2(myObject2* obj2);
}
myObject1.cpp:
void myObject1::addObject2(myObject2* obj2) {
_obj2Array.push_back(obj2);
}