Я в процессе обновления приложения ogre в использовании более новой версии ogre и столкнулся с некоторыми проблемами, скомпилировав это на окнах с помощью mingw, из-за обновленные библиотеки теперь используют glm.Ошибка конфликта заголовка с mingw32 (приложение ogre3d + cegui + glm)
При компиляции я бегу на ряд ошибок, как это:
In file included from c:\mingw\bin../lib/gcc/i686-w64-mingw32/4.7.3/include/xmmintrin.h:36:0,
from C:/mingw/OgreSDK/include/OGRE/OgreCommon.h:35,
from C:/mingw/OgreSDK/include/OGRE/OgreMath.h:34,
from D:/Users/jacob/Documents/git/ThriveDirectReview2/src/engine/serialization.h:7,
from D:\Users\jacob\Documents\git\ThriveDirectReview2\src\engine\engine.cpp:8:
c:\mingw\bin../lib/gcc/i686-w64-mingw32/4.7.3/include/mmintrin.h:53:1: error: previous declaration of 'void _m_empty()' with 'C++' linkage
In file included from C:/mingw/install/include/glm/core/setup.hpp:549:0,
from C:/mingw/install/include/glm/glm.hpp:89,
from C:/mingw/install/include/cegui-9999/CEGUI/../CEGUI/Size.h:37,
from C:/mingw/install/include/cegui-9999/CEGUI/../CEGUI/Rect.h:33,
from C:/mingw/install/include/cegui-9999/CEGUI/../CEGUI/Image.h:33,
from C:/mingw/install/include/cegui-9999/CEGUI/../CEGUI/BitmapImage.h:30,
from C:/mingw/install/include/cegui-9999/CEGUI/../CEGUI/CEGUI.h:37,
from D:\Users\jacob\Documents\git\ThriveDirectReview2\src\engine\engine.cpp:21:
Глядя на /glm/core/setup.hpp:549:0 мы имеем:
if defined(MINGW32) && (GLM_ARCH != GLM_ARCH_PURE)
include intrin.h
endif
Так огр (графическая библиотека) использует заголовок xmmintrin из gcc, а cegui (библиотека gui, построенная для ogre) использует intrin.h также из gcc, и оба этих заголовка определяют практически такой же интерфейс и вызывают конфликты.
Все соответствующие исходного кода можно найти здесь: https://github.com/Revolutionary-Games/Thrive/tree/ogre2.0
Так, казалось бы, что GLM несовместима с НКОЙ, который кажется довольно странным. Что еще более удивительно, так это то, что cegui не работает с ogre, поэтому первым моим шагом было сообщение на форумах cegui: http://cegui.org.uk/forum/viewtopic.php?f=10&t=7024, но мы не можем помочь.
Это похоже на очень специализированную проблему, возможно, слишком специализированную для переполнения стека, но я надеюсь, что вы можете помочь или дать предложение о направлении, чтобы обойти эту проблему!
EDIT: обнаружено, что оба файла intrin от gcc.