fatal error LNK1179
От: Dimas Россия  
Дата: 25.05.04 09:09
Оценка:
Здравствуйте.

Возникла следующая проблема с линковщиком

Есть следующая структура:


namespace trio
{

    // {C2F91A8B-1521-43ae-B9B0-0C465E5E4792}
    DEFINE_GUID(PIID_IClient, 
                0xc2f91a8b, 0x1521, 0x43ae, 0xb9, 0xb0, 0xc, 0x46, 0x5e, 0x5e, 0x47, 0x92);


}


namespace trio {

    namespace plugin {
        // {38C84EB9-9CDD-43d3-B0B7-59E25119B73B}
        DEFINE_GUID(PIID_IClient, 
            0x38c84eb9, 0x9cdd, 0x43d3, 0xb0, 0xb7, 0x59, 0xe2, 0x51, 0x19, 0xb7, 0x3b);
    }
}


Компилирутся все замечательно, а вот линковщик выдаёт следующее:

EmptyPlugin.obj : fatal error LNK1179: invalid or corrupt file: duplicate COMDAT '_PIID_IClient'

Нормальное ли это поведение линкера (использую MS C++.NET 2003)? Можно ли выкрутится из этой ситуации, оставив теже имена (я понимаю что если изменить имена то все будет ОК).

P.S. макрос DEFINE_GUID производит объявление примерно следующие: extern "C" const struct GUID PIID_IClient = {...,...,...}

Благодарю за любую информацию.
... << RSDN@Home 1.1.3 stable >>
166768437
Re: fatal error LNK1179
От: Lorenzo_LAMAS  
Дата: 25.05.04 09:17
Оценка: +1
А все просто. Ты дважды определил объект с одним и тем же именем, дело в extern "C" — тут тебе уже не помогает то, что они в пространствах имен..
Of course, the code must be complete enough to compile and link.
Re[2]: fatal error LNK1179
От: Dimas Россия  
Дата: 25.05.04 11:07
Оценка:
Здравствуйте, Lorenzo_LAMAS, Вы писали:

L_L>А все просто. Ты дважды определил объект с одним и тем же именем, дело в extern "C" — тут тебе уже не помогает то, что они в пространствах имен..


Спасибо. Буду значит разные имена писать.
... << RSDN@Home 1.1.3 stable >>
166768437
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.