[theora] Building theora 1.1.1 with mingw-w64-gcc 7.1 and msys
edgarreynaldo at members.allegro.cc
Thu Jun 1 22:40:45 UTC 2017
I fixed the problem by renaming the function and every instance of
'rint' to 'rint_az' (Round Int Away from Zero) and then
encoder_example.c built successfully.
Don't know if this needs to be patched upstream or not.
On 6/1/2017 2:53 PM, Edgar Reynaldo wrote:
> I recently attempted to build theora 1.1.1 with mingw-w64-gcc 7.1 and
> msys and it fails to build the encoder_example.c example program.
> There are multiple declarations of the function 'rint'. The source
> file created its own version of the function that rounds AWAY from
> zero. MinGW-W64 has its own version of the 'rint' function, which does
> not round away from zero. Therefore, encoder_example.c's rint function
> is necessary, but needs to be renamed because it includes math.h,
> which defines "extern __cdecl double rint(double)".
> Here is the relevant function from encoder_example.c lines 50-62 :
> #ifdef _WIN32
> /*supply missing headers and functions to Win32. going to hell, I know*/
> #include <fcntl.h>
> #include <io.h>
> static double rint(double x)
> if (x < 0.0)
> return (double)(int)(x - 0.5);
> return (double)(int)(x + 0.5);
> Is this fixed in more recent versions? Should I use 1.2 alpha? Should
> I build from the latest repository source? Ideas?
> I'm willing to submit a patch, but I don't know what the resulting
> function should be renamed.
More information about the theora