Mingw gcc build error

Hi.
I tried to build cocos2d with “build/cocos2d-mingw32-gcc-make.sh”.
But build stopped at 16% with error.

“conflicting declaration ‘typedef int ssize_t’”
How can I solve it?

My env
win7 64bit
msys2

Scanning dependencies of target audio [ 16%] Building CXX object cocos/audio/CMakeFiles/audio.dir/win32/SimpleAudioEngine.cpp.obj In file included from D:\App\cocos2d-x-3.0rc1\cocos\audio\win32\MciPlayer.h:4:0, from D:\App\cocos2d-x-3.0rc1\cocos\audio\win32\SimpleAudioEngine.cpp:30: D:/App/cocos2d-x-3.0rc1/cocos/2d/platform/win32/CCStdC.h:35:13: error: conflicting declaration 'typedef int ssize_t' typedef int ssize_t; ^ In file included from D:/App/msys2-base-x86_64-20140216.tar/msys64/mingw64/x86_64-w64-mingw32/include/crtdefs.h:10:0, from D:/App/msys2-base-x86_64-20140216.tar/msys64/mingw64/x86_64-w64-mingw32/include/stddef.h:7, from D:/App/msys2-base-x86_64-20140216.tar/msys64/mingw64/lib/gcc/x86_64-w64-mingw32/4.8.2/include/stddef.h:1, from D:/App/cocos2d-x-3.0rc1/cocos/audio/include/SimpleAudioEngine.h:30, from D:\App\cocos2d-x-3.0rc1\cocos\audio\win32\SimpleAudioEngine.cpp:25: D:/App/msys2-base-x86_64-20140216.tar/msys64/mingw64/x86_64-w64-mingw32/include/_mingw.h:387:35: error: 'ssize_t' has a previous declaration as 'typedef long long int ssize_t' __MINGW_EXTENSION typedef __int64 ssize_t;

@antoniomasamichi
I have the same problem

[ 16%] Building CXX object cocos/audio/CMakeFiles/audio.dir/win32/SimpleAudioEngine.cpp.obj
In file included from D:\cocos2d-x-3.0\cocos\audio\win32\MciPlayer.h:4:0,
from D:\cocos2d-x-3.0\cocos\audio\win32\SimpleAudioEngine.cpp:30:
D:/cocos2d-x-3.0/cocos/2d/platform/win32/CCStdC.h:35:17: error: conflicting declaration ‘typedef SSIZE_T ssize_t’
typedef SSIZE_T ssize_t;
^
In file included from D:/msys32/mingw32/i686-w64-mingw32/include/stddef.h:7:0,
from D:/msys32/mingw32/lib/gcc/i686-w64-mingw32/4.9.0/include/stddef.h:1,
from D:/cocos2d-x-3.0/cocos/audio/include/SimpleAudioEngine.h:30,
from D:\cocos2d-x-3.0\cocos\audio\win32\SimpleAudioEngine.cpp:25:
D:/msys32/mingw32/i686-w64-mingw32/include/crtdefs.h:47:13: note: previous declaration as ‘typedef int ssize_t’
typedef int ssize_t;
^
In file included from D:/cocos2d-x-3.0/cocos/2d/cocos2d.h:88:0,
from D:\cocos2d-x-3.0\cocos\audio\win32\SimpleAudioEngine.cpp:31:
D:/cocos2d-x-3.0/cocos/2d/CCLabelTTF.h:77:77: warning: ‘LabelTTF’ is deprecated (declared at D:/cocos2d-x-3.0/cocos/2d/CCLabelTTF.h:59) [-Wdeprecated-declarations]
TextVAlignment vAlignment = TextVAlignment::TOP);
^
D:/cocos2d-x-3.0/cocos/2d/CCLabelTTF.h:81:105: warning: ‘LabelTTF’ is deprecated (declared at D:/cocos2d-x-3.0/cocos/2d/CCLabelTTF.h:59) [-Wdeprecated-declarations]
static LabelTTF * createWithFontDefinition(const std::string& string, FontDefinition &textDefinition);
^
D:/cocos2d-x-3.0/cocos/2d/CCLabelTTF.h:116:30: warning: ‘LabelTTF’ is deprecated (declared at D:/cocos2d-x-3.0/cocos/2d/CCLabelTTF.h:59) [-Wdeprecated-declarations]
static LabelTTF * create();
^
In file included from D:/cocos2d-x-3.0/cocos/2d/cocos2d.h:89:0,
from D:\cocos2d-x-3.0\cocos\audio\win32\SimpleAudioEngine.cpp:31:
D:/cocos2d-x-3.0/cocos/2d/CCLabelBMFont.h:88:188: warning: ‘LabelBMFont’ is deprecated (declared at D:/cocos2d-x-3.0/cocos/2d/CCLabelBMFont.h:74) [-Wdeprecated-declarations]
static LabelBMFont * create(const std::string& str, const std::string& fntFile, float width = 0, TextHAlignment alignment = TextHAlignment::LEFT,const Point& imageOffset = Point::ZERO);
^
D:/cocos2d-x-3.0/cocos/2d/CCLabelBMFont.h:92:33: warning: ‘LabelBMFont’ is deprecated (declared at D:/cocos2d-x-3.0/cocos/2d/CCLabelBMFont.h:74) [-Wdeprecated-declarations]
static LabelBMFont * create();
^
D:\cocos2d-x-3.0\cocos\audio\win32\SimpleAudioEngine.cpp: In member function ‘virtual void CocosDenshion::SimpleAudioEngine::preloadEffect(const char*)’:
D:\cocos2d-x-3.0\cocos\audio\win32\SimpleAudioEngine.cpp:187:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
BREAK_IF(nRet == pPlayer->GetSoundID());
^
D:\cocos2d-x-3.0\cocos\audio\win32\SimpleAudioEngine.cpp:48:29: note: in definition of macro ‘BREAK_IF’
#define BREAK_IF(cond) if (cond) break;
^
In file included from D:/cocos2d-x-3.0/cocos/2d/cocos2d.h:282:0,
from D:\cocos2d-x-3.0\cocos\audio\win32\SimpleAudioEngine.cpp:31:
D:/cocos2d-x-3.0/cocos/deprecated/CCDeprecated.h: At global scope:
D:/cocos2d-x-3.0/cocos/deprecated/CCDeprecated.h:926:35: warning: ‘cocos2d::kCCPrioritySystem’ defined but not used [-Wunused-variable]
CC_DEPRECATED_ATTRIBUTE const int kCCPrioritySystem = Scheduler::PRIORITY_SYSTEM;
^
D:/cocos2d-x-3.0/cocos/deprecated/CCDeprecated.h:927:35: warning: ‘cocos2d::kCCPriorityNonSystemMin’ defined but not used [-Wunused-variable]
CC_DEPRECATED_ATTRIBUTE const int kCCPriorityNonSystemMin = Scheduler::PRIORITY_NON_SYSTEM_MIN;
^
D:\cocos2d-x-3.0\cocos\audio\win32\SimpleAudioEngine.cpp:41:17: warning: ‘CocosDenshion::s_szRootPath’ defined but not used [-Wunused-variable]
static char s_szRootPath[MAX_PATH];
^
D:\cocos2d-x-3.0\cocos\audio\win32\SimpleAudioEngine.cpp:42:17: warning: ‘CocosDenshion::s_dwRootLen’ defined but not used [-Wunused-variable]
static DWORD s_dwRootLen;
^
D:\cocos2d-x-3.0\cocos\audio\win32\SimpleAudioEngine.cpp:43:17: warning: ‘CocosDenshion::s_szFullPath’ defined but not used [-Wunused-variable]
static char s_szFullPath[MAX_PATH];
^
cocos\audio\CMakeFiles\audio.dir\build.make:57: recipe for target ‘cocos/audio/CMakeFiles/audio.dir/win32/SimpleAudioEngine.cpp.obj’ failed
mingw32-make[2]: *** [cocos/audio/CMakeFiles/audio.dir/win32/SimpleAudioEngine.cpp.obj] Error 1
CMakeFiles\Makefile2:392: recipe for target ‘cocos/audio/CMakeFiles/audio.dir/all’ failed
mingw32-make[1]: *** [cocos/audio/CMakeFiles/audio.dir/all] Error 2
Makefile:115: recipe for target ‘all’ failed
mingw32-make: *** [all] Error 2

I have the same problem

My env
win7 64bit
msys2

$ mingw32-make.exe
[ 2%] Built target kazmath
[ 7%] Built target chipmunk_static
[ 14%] Built target box2d
[ 14%] Built target unzip
[ 15%] Built target tinyxml2
[ 16%] Built target xxhash
[ 16%] Building CXX object cocos/audio/CMakeFiles/audio.dir/win32/SimpleAudioEngine.cpp.obj
In file included from D:\cocos2d-x-3.0\cocos\audio\win32\MciPlayer.h:4:0,
from D:\cocos2d-x-3.0\cocos\audio\win32\SimpleAudioEngine.cpp:30:
D:/cocos2d-x-3.0/cocos/2d/platform/win32/CCStdC.h:35:17: error: conflicting declaration ‘typedef SSIZE_T ssize_t’
typedef SSIZE_T ssize_t;
^
In file included from D:/msys64/mingw32/i686-w64-mingw32/include/stddef.h:7:0,
from D:/msys64/mingw32/lib/gcc/i686-w64-mingw32/4.9.0/include/stddef.h:1,
from D:/cocos2d-x-3.0/cocos/audio/include/SimpleAudioEngine.h:30,
from D:\cocos2d-x-3.0\cocos\audio\win32\SimpleAudioEngine.cpp:25:
D:/msys64/mingw32/i686-w64-mingw32/include/crtdefs.h:47:13: note: previous declaration as ‘typedef int ssize_t’
typedef int ssize_t;
^
In file included from D:/cocos2d-x-3.0/cocos/2d/cocos2d.h:88:0,
from D:\cocos2d-x-3.0\cocos\audio\win32\SimpleAudioEngine.cpp:31:

I build 3.0 rc0 in WinXP with msys2, There is no problem.

vi cocos2d-x-3.0/CMakeLists.txt

if(MINGW)
add_definitions(-DGLEW_STATIC)
add_definitions(-D__SSIZE_T) # add this line
endif()

make again

you guys should be using mingw-w64.org and not mingw.org compilers

Those compilers are really old and don’t have proper headers for size_t