cygwin警告:COMDAT符号与节名称不匹配

时间:2016-12-16 14:31:36

标签: gcc cygwin

我在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);
}

0 个答案:

没有答案