[theora] Building theora 1.1.1 with mingw-w64-gcc 7.1 and msys

Edgar Reynaldo edgarreynaldo at members.allegro.cc
Thu Jun 1 22:40:45 UTC 2017


Hi people,

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.

Edgar



On 6/1/2017 2:53 PM, Edgar Reynaldo wrote:
> Hello,
>
> 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);
>   else
>     return (double)(int)(x + 0.5);
> }
> #endif
>
> 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.
>
> Edgar
>
>
>



More information about the theora mailing list