VS2015 recognizes void* environ as void **(__cdecl *)(void).
And if you "follow" the environ definition trail, you end up with
environ -> _environ -> (*__p__environ())
and __p__environ() is defined as
_DCRTIMP char*** __cdecl __p__environ (void); in stdlib.h
I'm not sure why it does not want the cast to happen a pointer should be completely valid.
It could be that something messed some configuration up while retargeting projects
Scratch everything above this.
Ooh environ is a reserved name, I changed it to environ2 and now it's working, I was already wondering why it was purple (and not argument-name white).
Well that part builds now.
Next issues that popped up were some more back_inserter issues (Fixed on Windows with #include <Iterator>)
Next hurdle is in cores/DllLoader/exports/emu_msvcrt.cpp
_ptr is not a member of _iobuf L:1600
_filbuf identifier not found L: 2249
_flsbuf identifier not found L: 2280
Seems like stdio.h had changes? Or at least google tells me they should be related to stdio.
EDIT: fixed path
EDIT: stdio does define it but the definition in corecrt_wstdio.h seems to "win".
EDIT: The include tree.
Code:
emu_msvcrt.cpp
2> Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt\math.h
2> Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt\io.h
2> Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt\corecrt_io.h
2> Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt\direct.h
2> Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt\process.h
2> Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt\corecrt_startup.h
2> Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt\math.h
2> Note: including file: C:\program files (x86)\Microsoft Visual Studio 14.0\VC\include\vcruntime_startup.h
2> Note: including file: C:\program files (x86)\Microsoft Visual Studio 14.0\VC\include\vcruntime.h
2> Note: including file: C:\program files (x86)\Microsoft Visual Studio 14.0\VC\include\stdbool.h
2> Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt\sys/timeb.h
2> Note: including file: F:\Users\Erwin\Documents\GitHub\xbmc\xbmc\system.h
2> Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\um\mmsystem.h
2> Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\um\DInput.h
2> Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\um\DSound.h
2> Note: including file: F:\Users\Erwin\Documents\GitHub\xbmc\xbmc\win32\PlatformInclude.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\win32\PlatformDefs.h
2> Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt\inttypes.h
2> Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt\fcntl.h
2> Note: including file: C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt\signal.h
2> Note: including file: F:\Users\Erwin\Documents\GitHub\xbmc\xbmc\Util.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\MediaSource.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\GUIPassword.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\settings/lib/ISettingCallback.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\settings/lib/Setting.h
2> Note: including file: C:\program files (x86)\Microsoft Visual Studio 14.0\VC\include\set
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\settings\lib\ISetting.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\settings\lib\SettingRequirement.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\settings\lib\SettingConditions.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\settings\lib\SettingDefinitions.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\utils/BooleanLogic.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\utils/IXmlDeserializable.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\settings\lib\ISettingControl.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\settings\lib\SettingDependency.h
2> Note: including file: C:\program files (x86)\Microsoft Visual Studio 14.0\VC\include\list
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\settings\lib\SettingUpdate.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\threads/SharedSection.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\threads/Condition.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\threads/platform/Condition.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\threads/platform/win/Condition.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\threads/SingleLock.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\threads/CriticalSection.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\threads/platform/CriticalSection.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\threads/platform/win/CriticalSection.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\threads/Lockables.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\threads/Helpers.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\threads/SystemClock.h
2> Note: including file: F:\Users\Erwin\Documents\GitHub\xbmc\xbmc\filesystem/SpecialProtocol.h
2> Note: including file: F:\Users\Erwin\Documents\GitHub\xbmc\xbmc\URL.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\utils/UrlOptions.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\utils/Variant.h
2> Note: including file: F:\Users\Erwin\Documents\GitHub\xbmc\xbmc\filesystem/File.h
2> Note: including file: F:\Users\Erwin\Documents\GitHub\xbmc\xbmc\utils/auto_buffer.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\filesystem\IFileTypes.h
2> Note: including file: F:\Users\Erwin\Documents\GitHub\xbmc\xbmc\settings/Settings.h
2> Note: including file: F:\Users\Erwin\Documents\GitHub\xbmc\xbmc\settings/SettingControl.h
2> Note: including file: F:\Users\Erwin\Documents\GitHub\xbmc\xbmc\settings/lib/ISettingControlCreator.h
2> Note: including file: F:\Users\Erwin\Documents\GitHub\xbmc\xbmc\settings/SettingCreator.h
2> Note: including file: F:\Users\Erwin\Documents\GitHub\xbmc\xbmc\settings/lib/ISettingCreator.h
2> Note: including file: F:\Users\Erwin\Documents\GitHub\xbmc\xbmc\FileItem.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\guilib/GUIListItem.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\utils/IArchivable.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\utils/ISerializable.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\utils/ISortable.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\utils\SortUtils.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\utils\DatabaseUtils.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\media/MediaType.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\SortFileItem.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\utils\LabelFormatter.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\XBDateTime.h
2> Note: including file: F:\Users\Erwin\Documents\GitHub\xbmc\xbmc\filesystem/Directory.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\filesystem\IDirectory.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\cores\dllloader\exports\emu_msvcrt.h
2> Note: including file: F:\Users\Erwin\Documents\GitHub\xbmc\xbmc\win32/dirent.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\cores\dllloader\exports\emu_dummy.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\cores\dllloader\exports\emu_kernel32.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\cores\dllloader\exports\util/EmuFileWrapper.h
2> Note: including file: F:\Users\Erwin\Documents\GitHub\xbmc\xbmc\utils/log.h
2> Note: including file: f:\users\erwin\documents\github\xbmc\xbmc\utils\win32/Win32InterfaceForCLog.h
2> Note: including file: F:\Users\Erwin\Documents\GitHub\xbmc\xbmc\commons/ilog.h
2> Note: including file: F:\Users\Erwin\Documents\GitHub\xbmc\xbmc\utils/params_check_macros.h
2> Note: including file: F:\Users\Erwin\Documents\GitHub\xbmc\xbmc\utils/GlobalsHandling.h
2> Note: including file: F:\Users\Erwin\Documents\GitHub\xbmc\xbmc\utils/CharsetConverter.h
2> Note: including file: F:\Users\Erwin\Documents\GitHub\xbmc\xbmc\utils/uXstrings.h
2> Note: including file: F:\Users\Erwin\Documents\GitHub\xbmc\xbmc\utils/URIUtils.h
2> Note: including file: F:\Users\Erwin\Documents\GitHub\xbmc\xbmc\utils/Environment.h
2> Note: including file: F:\Users\Erwin\Documents\GitHub\xbmc\xbmc\utils/StringUtils.h
2>..\..\xbmc\cores\DllLoader\exports\emu_msvcrt.cpp(1600): error C2039: '_ptr': is not a member of '_iobuf'
2> C:\Program Files (x86)\Windows Kits\10\Include\10.0.10586.0\ucrt\corecrt_wstdio.h(26): note: see declaration of '_iobuf'
2>..\..\xbmc\cores\DllLoader\exports\emu_msvcrt.cpp(2249): error C3861: '_filbuf': identifier not found
2>..\..\xbmc\cores\DllLoader\exports\emu_msvcrt.cpp(2280): error C3861: '_flsbuf': identifier not found
It seems to refuse to include stdio.h because it is defined in there.
Perl has the same bug:
https://rt.perl.org/Public/Bug/Display.html?id=125714 I think using FILE struct internals is no longer okay in the newer SDK
_iobuf is now defined as
Code:
typedef struct _iobuf
{
void* _Placeholder;
} FILE;
Good perl5-porters mailing list thread:
http://www.nntp.perl.org/group/perl.perl...27727.html
And there is the problem:
https://msdn.microsoft.com/en-us/library/bb531344.aspx (search for FILE Encapsulation)
So basically this is just a lesson of let's not use undocumented members/functionality.
Paxxi already started this a while ago:
https://github.com/Paxxi/xbmc/commit/647...bd76f6aa9d
Both that code and mine won't compile due to dependencies not being ready for VS2015 (and some won't recompile, like mysqlclient.lib)