Please change 'zerostruct(astat)' to 'memset(&astat, 0, sizeof(astat))' in
modules/juce_core/native/juce_win32_Network.cpp
so mingw cross compiling works better. Thanks!
Please change 'zerostruct(astat)' to 'memset(&astat, 0, sizeof(astat))' in
modules/juce_core/native/juce_win32_Network.cpp
so mingw cross compiling works better. Thanks!
And also add "#include <stdint.h" in juce_core/memory/juce_Atomic.h
so the 64bit mingw works
What on earth is it complaining about?? That's perfectly legit code!
FYI, I never had such issues with mingw
I think I'm getting the same issue here:
$ make
Compiling Main.cpp
Compiling MainComponent.cpp
Compiling juce_core.cpp
In file included from ../../../../modules/juce_core/juce_core.cpp:195:0:
../../../../modules/juce_core/native/juce_win32_Network.cpp: In function 'void juce::MACAddressHelpers::getViaNetBios(juce::Array<juce::MACAddress>&)':
../../../../modules/juce_core/native/juce_win32_Network.cpp:411:38: error: no matching function for call to 'zerostruct(juce::MACAddressHelpers::getViaNetBios(j
uce::Array<juce::MACAddress>&)::ASTAT&)'
zerostruct (astat);
^
../../../../modules/juce_core/native/juce_win32_Network.cpp:411:38: note: candidate is:
In file included from ../../../../modules/juce_core/juce_core.h:162:0,
from ../../../../modules/juce_core/juce_core.cpp:44:
../../../../modules/juce_core/memory/juce_Memory.h:38:13: note: template<class Type> void juce::zerostruct(Type&)
inline void zerostruct (Type& structure) noexcept { memset (&structure, 0, sizeof (structure)); }
^
../../../../modules/juce_core/memory/juce_Memory.h:38:13: note: template argument deduction/substitution failed:
In file included from ../../../../modules/juce_core/juce_core.cpp:195:0:
../../../../modules/juce_core/native/juce_win32_Network.cpp: In substitution of 'template<class Type> void juce::zerostruct(Type&) [with Type = juce::MACAddress
Helpers::getViaNetBios(juce::Array<juce::MACAddress>&)::ASTAT]':
../../../../modules/juce_core/native/juce_win32_Network.cpp:411:38: required from here
../../../../modules/juce_core/native/juce_win32_Network.cpp:411:38: error: template argument for 'template<class Type> void juce::zerostruct(Type&)' uses local
type 'juce::MACAddressHelpers::getViaNetBios(juce::Array<juce::MACAddress>&)::ASTAT'
zerostruct (astat);
^
../../../../modules/juce_core/native/juce_win32_Network.cpp:411:38: error: trying to instantiate 'template<class Type> void juce::zerostruct(Type&)'
make: *** [build/intermediate/Debug/juce_core_1ee54a40.o] Error 1
This is with a fresh install of MinGW and latest JUCE.
What gives?
By the way adding -std=c++11 to the $(CXX) options seems to have fixed this problem!
However I am now getting the following errors:
$ make
Compiling Main.cpp
In file included from ../../Source/../JuceLibraryCode/modules/juce_core/../../../../../modules/juce_core/juce_core.h:173:0,
from ../../Source/../JuceLibraryCode/modules/juce_core/juce_core.h:4,
from ../../Source/../JuceLibraryCode/JuceHeader.h:17,
from ../../Source/Main.cpp:10:
../../Source/../JuceLibraryCode/modules/juce_core/../../../../../modules/juce_core/text/juce_CharPointer_UTF8.h: In member function 'int juce::CharPointer_UTF8:
:compareIgnoreCase(juce::CharPointer_UTF8) const':
../../Source/../JuceLibraryCode/modules/juce_core/../../../../../modules/juce_core/text/juce_CharPointer_UTF8.h:425:41: error: 'stricmp' was not declared in thi
s scope
return stricmp (data, other.data);
^
../../Source/../JuceLibraryCode/modules/juce_core/../../../../../modules/juce_core/text/juce_CharPointer_UTF8.h: In member function 'juce::int64 juce::CharPoint
er_UTF8::getIntValue64() const':
../../Source/../JuceLibraryCode/modules/juce_core/../../../../../modules/juce_core/text/juce_CharPointer_UTF8.h:485:29: error: '_atoi64' was not declared in thi
s scope
return _atoi64 (data);
^
In file included from ../../Source/../JuceLibraryCode/modules/juce_core/../../../../../modules/juce_core/juce_core.h:174:0,
from ../../Source/../JuceLibraryCode/modules/juce_core/juce_core.h:4,
from ../../Source/../JuceLibraryCode/JuceHeader.h:17,
from ../../Source/Main.cpp:10:
../../Source/../JuceLibraryCode/modules/juce_core/../../../../../modules/juce_core/text/juce_CharPointer_UTF16.h: In member function 'int juce::CharPointer_UTF1
6::compareIgnoreCase(juce::CharPointer_UTF16) const':
../../Source/../JuceLibraryCode/modules/juce_core/../../../../../modules/juce_core/text/juce_CharPointer_UTF16.h:355:42: error: '_wcsicmp' was not declared in t
his scope
return _wcsicmp (data, other.data);
^
../../Source/../JuceLibraryCode/modules/juce_core/../../../../../modules/juce_core/text/juce_CharPointer_UTF16.h: In member function 'int juce::CharPointer_UTF1
6::compareIgnoreCaseUpTo(juce::CharPointer_UTF16, int) const':
../../Source/../JuceLibraryCode/modules/juce_core/../../../../../modules/juce_core/text/juce_CharPointer_UTF16.h:360:62: error: '_wcsnicmp' was not declared in
this scope
return _wcsnicmp (data, other.data, (size_t) maxChars);
^
../../Source/../JuceLibraryCode/modules/juce_core/../../../../../modules/juce_core/text/juce_CharPointer_UTF16.h: In member function 'int juce::CharPointer_UTF1
6::getIntValue32() const':
../../Source/../JuceLibraryCode/modules/juce_core/../../../../../modules/juce_core/text/juce_CharPointer_UTF16.h:412:27: error: '_wtoi' was not declared in this
scope
return _wtoi (data);
^
../../Source/../JuceLibraryCode/modules/juce_core/../../../../../modules/juce_core/text/juce_CharPointer_UTF16.h: In member function 'juce::int64 juce::CharPoin
ter_UTF16::getIntValue64() const':
../../Source/../JuceLibraryCode/modules/juce_core/../../../../../modules/juce_core/text/juce_CharPointer_UTF16.h:422:29: error: '_wtoi64' was not declared in th
is scope
return _wtoi64 (data);
^
In file included from ../../Source/../JuceLibraryCode/modules/juce_core/../../../../../modules/juce_core/juce_core.h:176:0,
from ../../Source/../JuceLibraryCode/modules/juce_core/juce_core.h:4,
from ../../Source/../JuceLibraryCode/JuceHeader.h:17,
from ../../Source/Main.cpp:10:
../../Source/../JuceLibraryCode/modules/juce_core/../../../../../modules/juce_core/text/juce_CharPointer_ASCII.h: In member function 'int juce::CharPointer_ASCI
I::compareIgnoreCase(juce::CharPointer_ASCII) const':
../../Source/../JuceLibraryCode/modules/juce_core/../../../../../modules/juce_core/text/juce_CharPointer_ASCII.h:280:41: error: 'stricmp' was not declared in th
is scope
return stricmp (data, other.data);
^
../../Source/../JuceLibraryCode/modules/juce_core/../../../../../modules/juce_core/text/juce_CharPointer_ASCII.h: In member function 'juce::int64 juce::CharPoin
ter_ASCII::getIntValue64() const':
../../Source/../JuceLibraryCode/modules/juce_core/../../../../../modules/juce_core/text/juce_CharPointer_ASCII.h:350:29: error: '_atoi64' was not declared in th
is scope
return _atoi64 (data);
^
make: *** [build/intermediate/Debug/Main_90ebc5c2.o] Error 1
Looks like most of those places are where it needs to be told to use the posix call instead of the Windows one, e.g.
int64 getIntValue64() const noexcept
{
#if JUCE_LINUX || JUCE_ANDROID || JUCE_MINGW
return atoll (data);
#elif JUCE_WINDOWS
return _atoi64 (data);
#else
..I don't have time to go through all those errors and test it with mingw myself, but if you wanted to do that and send me a diff it's probably quite a trivial set of changes to add to the codebase.