[FFmpeg-devel] Eliminating long
Mon Mar 31 00:56:15 CEST 2008
On Sun, 2008-03-30 at 23:40 +0100, Jay L. T. Cornwall wrote:
> Luca Barbato wrote:
> >> There is no reliable way to marshall this type into a managed structure
> >> on all platforms. Could I request that the type be made explicit in
> >> ByteIOContext, as 'unsigned int' or 'uint32_t'.
> > I'm not sure that's a good workaround... Cannot fix it on your wrapper side?
> Not reliably. The size of the ByteIOContext structure depends on the
> compiler that FFmpeg was built with. It's worse than a 32-bit/64-bit
Normally compilers follow an ABI, and the ABI will define the size of
'long'. If you really wouldn't know the ABI used then you couldn't do
much with a library (there would be much more significant problems than
> issue; unfortunately the C specification is lax enough to permit that
> for the long type. There's no way to detect how the structure was built
> from C#.
The C specification allows varying size for basically everything except
the intXX_t types, including 'int'.
If C# really makes it that hard to interface with C libraries I'd
consider using a better language.
More information about the ffmpeg-devel