Also use the __APPLE__ predefined define instead of MACOS for enabling
these code paths.
This also avoids having to link to the CoreServices framework in
order to get the Gestalt function.
This gets rid of the code that parses /proc/cpuinfo, and avoids
forking within the library.
The previous code also failed build on modern glibc versions
due to ignoring the return value of the system, read and write
system calls.
bundleloader.h, which is included if MACOS is defined, defines
inline functions that reference bundle loading system functions,
which requires linking to the core foundation framework.
Avoid requiring linking to extra libraries/frameworks if
NO_DYNAMIC_VP is defined.
Add a struct that matches the C++ interface vtable.
This requires that the C++ interface methods are declared to use
the same calling convention as normal C functions, and that the
C struct exactly matches the layout and ordering of the C++
virtual table - MSVC seemed to reorder methods if there were
overloaded methods.
This is required to make the order in the C++ virtual table
consistent in MSVC - previously the overloaded methods were
ordered differently in the vtable compared to the interface
declaration.
This refers to a file "bundlewelsenc.h" which doesn't even
exist in the project at the moment.
The corresponding bundle loading code is not called at all
in the decoder console tool.
Only the 2008 version is kept up to date at the moment.
The newer versions of MSVC can open and upgrade the 2008 version
files anyway, so by removing the unmaintained ones we reduce the
confusion and maintainance burden.
Additionally, the preferred way of building with MSVC is with the
makefile build system, according to the readme.
Instead just link directly to it. This matches how the library is
linked/loaded in encConsole/h264enc as well.
Only the 2008 version project file is updated for now, since
the 2010 and 2012 ones are out of sync right now.
While building succeeds in MSVC 2008, it currently fails in 2012
due to error C1189 "The C++ standard library forbids macroizing
keywords", which is caused by doing "#define inline __inline" in
the macros.h header.
This could have been missed before since it only was triggered
if macros.h was included before some other system header was
included that contained checks against these inline defines.