GCC4.4.1 multiple definition of forbiddenExp/emptyExp
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 26.04.11 15:22
Оценка:
Здравствуйте, коллеги!

Стал тут компилировать свой код в MINGW GCC4.4.1, получаю ошибки

multiple definition of forbiddenExp
multiple definition of emptyExp


В чем проблема, никто не подскажет?

static // добавил, не помогло
inline
ilint_t interlockedExchangeAdd(ilint_t ILVOLATILE *dst, ilint_t addval)
{ // multiple definition of forbiddenExp показывает сюда
// ...
}

class CGenericRefCounter
{
   ilint_t ILVOLATILE  counter;
   public:
   CGenericRefCounter() : counter(0) {}
   CGenericRefCounter(int i) : counter(i) {}
   //CRefCounter(ilint_t c) : counter(c) {}
   CGenericRefCounter(const CGenericRefCounter &rc) : counter(rc.counter) {}
   operator ilint_t() const { return counter; } // multiple definition of emptyExp показывает сюда
/// ...
};
Маньяк Робокряк колесит по городу
Re: GCC4.4.1 multiple definition of forbiddenExp/emptyExp
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 26.04.11 15:30
Оценка:
Здравствуйте, Marty, Вы писали:

Уточняю, что ругается линкер
Маньяк Робокряк колесит по городу
Re: GCC4.4.1 multiple definition of forbiddenExp/emptyExp
От: Vamp Россия  
Дата: 26.04.11 15:33
Оценка: +1
M>

M>multiple definition of forbiddenExp
M>multiple definition of emptyExp

В приведенном тобой коде не встречаются идентификаторы, на которые ругается линкер. Приведи релевантный код.
Да здравствует мыло душистое и веревка пушистая.
Re[2]: GCC4.4.1 multiple definition of forbiddenExp/emptyExp
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 26.04.11 15:41
Оценка:
Здравствуйте, Vamp, Вы писали:

V>В приведенном тобой коде не встречаются идентификаторы, на которые ругается линкер. Приведи релевантный код.


Вот такой вывод линкера. forbiddenExp/emptyExp вообще нигде не встречаются у меня, а строки исходника по указанному в сообщении об ошибке адресу я привел

Linking console executable: ..\..\..\out\win32(mingw)\CodeBlocks\debug\nmdlc2.exe
..\..\..\out\win32(mingw)\CodeBlocks\debug\_nmdlc2\src\npl3\nmeagen\nmdlDefs.o: In function `interlockedExchangeAdd':
F:\work\navis\trunk\build\win32(mingw)\npl/../../../include/cli/interlocked.h:217: multiple definition of `forbiddenExp'
..\..\..\out\win32(mingw)\CodeBlocks\debug\_nmdlc2\src\npl3\nmeagen\nmdlc2.o:F:\work\navis\trunk\build\win32(mingw)\npl/../../../include/cli/interlocked.h:217: first defined here
..\..\..\out\win32(mingw)\CodeBlocks\debug\_nmdlc2\src\npl3\nmeagen\nmdlDefs.o: In function `interlockedExchangeAdd':
F:\work\navis\trunk\build\win32(mingw)\npl/../../../include/cli/refcnt.h:111: multiple definition of `emptyExp'
..\..\..\out\win32(mingw)\CodeBlocks\debug\_nmdlc2\src\npl3\nmeagen\nmdlc2.o:F:\work\navis\trunk\build\win32(mingw)\npl/../../../include/cli/interlocked.h:217: first defined here

Маньяк Робокряк колесит по городу
Re[2]: GCC4.4.1 multiple definition of forbiddenExp/emptyExp
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 26.04.11 15:44
Оценка:
Здравствуйте, Vamp, Вы писали:

Этот GCC такой GCC
Нашел в хидерах libxml2:

XMLPUBVAR xmlExpNodePtr forbiddenExp;
XMLPUBVAR xmlExpNodePtr emptyExp;


Как побороть без правки чужих хидеров?
Маньяк Робокряк колесит по городу
Re[3]: GCC4.4.1 multiple definition of forbiddenExp/emptyExp
От: Vamp Россия  
Дата: 26.04.11 16:41
Оценка:
M>Нашел в хидерах libxml2:
M>
M>XMLPUBVAR xmlExpNodePtr forbiddenExp;
M>XMLPUBVAR xmlExpNodePtr emptyExp;
M>


Вот что раскрывается XMLPUBVAR?
Да здравствует мыло душистое и веревка пушистая.
Re[4]: GCC4.4.1 multiple definition of forbiddenExp/emptyExp
От: Marty Пират https://www.youtube.com/channel/UChp5PpQ6T4-93HbNF-8vSYg
Дата: 28.04.11 14:38
Оценка:
Здравствуйте, Vamp, Вы писали:

V>Вот что раскрывается XMLPUBVAR?


Разобрался, в libxml2 в хидерах что-то не так для MinGW было, может косяк, может так и задумано было для старых версий mingw.
Для других компиляторов выделенное было, для мингв я добавил, и заработало.

Меня сбило с толку, что студия ошибку показывала на мой код. Хотя, при ошибках во время линковки такое бывает иногда.

#if defined(_WIN32) && defined(__MINGW32__)
  #undef XMLPUBFUN
  #undef XMLPUBVAR
  #undef XMLCALL
  #undef XMLCDECL
  /*
   * if defined(IN_LIBXML) this raises problems on mingw with msys
   * _imp__xmlFree listed as missing. Try to workaround the problem
   * by also making that declaration when compiling client code.
   */
  #if defined(IN_LIBXML) && !defined(LIBXML_STATIC)
    #define XMLPUBFUN __declspec(dllexport)
    #define XMLPUBVAR __declspec(dllexport)
  #else
    #define XMLPUBFUN
    #if !defined(LIBXML_STATIC)
      #define XMLPUBVAR __declspec(dllimport) extern
    #else
      #define XMLPUBVAR extern
    #endif
  #endif
  #define XMLCALL __cdecl
  #define XMLCDECL __cdecl
  #if !defined _REENTRANT
    #define _REENTRANT
  #endif
#endif
Маньяк Робокряк колесит по городу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.