I thought about this, and the MSVCRT mismatch also. What annoys me is that I even tried compiling the library myself (with exactly the same Visual Studio 2008 as my application) and the bug didn&#39;t change the least. Thank you for your ideas, but unless someone can confirm this, there still remains the possibility that I&#39;ve made an error somewhere. Also someone with more experience with native debuggers (I&#39;m a kind of .NET man) may be able to detect where the error comes from more precisely.<br>
About the Windows weirdness - we all want to program for Linux/Unix only, but even I don&#39;t want to use it for my desktop, so I guess we&#39;ll have to deal with Win32.<br><br>Ivailo Karamanolev<br><br><div class="gmail_quote">
On Wed, Jan 6, 2010 at 1:15 AM, Ben Allison <span dir="ltr">&lt;<a href="mailto:benski@winamp.com">benski@winamp.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
Ivailo -<br>
<br>
FILE objects are internal to the C runtime library, they are not system<br>
objects like HANDLEs (windows) or file descriptors (unix).  This means<br>
that if libFLAC has linked against a different C runtime library than your<br>
application, then the two FILE objects are incompatible.  This isn&#39;t just<br>
a Windows specific issue either - if libFLAC was compiled against libc and<br>
your application links to glibc (or even a different version of libc) you<br>
will experience the same issue.  In my opinion, this function should have<br>
never been in the API in the first place.  A function that accepts a<br>
HANDLE on Windows or an int (file descriptor) on Unix is more appropriate.<br>
<br>
-Ben Allison<br>
<div class="im"><br>
&gt; I managed to get around it. I used the stream functions and provided my<br>
&gt; own<br>
&gt; callbacks for reading and writing. What&#39;s strange is that what I&#39;ve done<br>
&gt; is<br>
&gt; just copied the contents of read/write/seek/tell/eof callbacks from the<br>
&gt; sources to my application and it works just fine, no glitches. When I use<br>
&gt; the build-in implementation, it just crashes without any reason. It&#39;s not<br>
&gt; a<br>
&gt; problem to stick with my own callbacks for reading, but fixing this issue<br>
&gt; (if it&#39;s not just me) would be nice.<br>
&gt;<br>
&gt; On Wed, Jan 6, 2010 at 12:38 AM, Erik de Castro Lopo<br>
</div>&gt; &lt;<a href="mailto:mle%2Bla@mega-nerd.com">mle+la@mega-nerd.com</a>&lt;<a href="mailto:mle%252Bla@mega-nerd.com">mle%2Bla@mega-nerd.com</a>&gt;<br>
<div><div></div><div class="h5">&gt;&gt; wrote:<br>
&gt;<br>
&gt;&gt; Ivailo Karamanolev wrote:<br>
&gt;&gt;<br>
&gt;&gt; &gt; I am currently learning the FLAC C API and had the code working with<br>
&gt;&gt; &gt; FLAC__stream_decoder_init_file. However, since I&#39;d need the Unicode<br>
&gt;&gt; filename<br>
&gt;&gt; &gt; support, I tried _wfopen_s in combination with<br>
&gt;&gt; &gt; FLAC__stream_decoder_init_FILE, however I get a runtime crash as sonn<br>
&gt;&gt; as<br>
&gt;&gt; I<br>
&gt;&gt; &gt; call FLAC__stream_decoder_process_until_end_of_stream. The same code<br>
&gt;&gt; &gt; (partially taken from the examples) is working perfectly with the<br>
&gt;&gt; function<br>
&gt;&gt; &gt; accepting filename and crashing with the one accepting FILE*. I have<br>
&gt;&gt; tried<br>
&gt;&gt; &gt; both compiling the library myself and using the precompiled<br>
&gt;&gt; &gt; flac-1.2.1-devel-win. Can someone try if it is working for him (the<br>
&gt;&gt; FILE*)<br>
&gt;&gt; &gt; version and if yes - send back the source code?<br>
&gt;&gt; &gt; I work in Windows 7 64bit, but I tried that also on a virtual Windows<br>
&gt;&gt; XP<br>
&gt;&gt; and<br>
&gt;&gt; &gt; it crashes there also.<br>
&gt;&gt;<br>
&gt;&gt; There is a whole bunch of weird stuff in windows, this is just another<br>
&gt;&gt; instance.<br>
&gt;&gt;<br>
&gt;&gt; If what you want to do is read/write FLAC files with windows UCS-16<br>
&gt;&gt; filenames,<br>
&gt;&gt; one option is to use libsndfile:<br>
&gt;&gt;<br>
&gt;&gt;    <a href="http://www.mega-nerd.com/libsndfile/" target="_blank">http://www.mega-nerd.com/libsndfile/</a><br>
&gt;&gt;<br>
&gt;&gt; which with version 1.0.21 has added this function:<br>
&gt;&gt;<br>
&gt;&gt;    /* The function sf_wchar_open() is Windows Only!<br>
&gt;&gt;    ** Open a file passing in a Windows Unicode filename. Otherwise, this<br>
&gt;&gt; is<br>
&gt;&gt;    ** the same as sf_open().<br>
&gt;&gt;    **<br>
&gt;&gt;    ** In order for this to work, you need to do the following:<br>
&gt;&gt;    **<br>
&gt;&gt;    **          #include &lt;windows.h&gt;<br>
&gt;&gt;    **          #define ENABLE_SNDFILE_WINDOWS_PROTOTYPES 1<br>
&gt;&gt;    **          #including &lt;sndfile.h&gt;<br>
&gt;&gt;    */<br>
&gt;&gt;    #if ENABLE_SNDFILE_WINDOWS_PROTOTYPES<br>
&gt;&gt;    SNDFILE* sf_wchar_open (LPCWSTR wpath, int mode, SF_INFO *sfinfo) ;<br>
&gt;&gt;    #endif<br>
&gt;&gt;<br>
&gt;&gt; There is a windows binary installer in the main web page (one for each<br>
&gt;&gt; of<br>
&gt;&gt; 32 and 64 bit windows).<br>
&gt;&gt;<br>
&gt;&gt; The only downside to this is that libsndfile does not expose the all of<br>
&gt;&gt; the features of the FLAC API to the user.<br>
&gt;&gt;<br>
&gt;&gt; Erik<br>
&gt;&gt; --<br>
&gt;&gt; ----------------------------------------------------------------------<br>
&gt;&gt; Erik de Castro Lopo<br>
&gt;&gt; <a href="http://www.mega-nerd.com/" target="_blank">http://www.mega-nerd.com/</a><br>
&gt;&gt; _______________________________________________<br>
&gt;&gt; Flac-dev mailing list<br>
&gt;&gt; <a href="mailto:Flac-dev@xiph.org">Flac-dev@xiph.org</a><br>
&gt;&gt; <a href="http://lists.xiph.org/mailman/listinfo/flac-dev" target="_blank">http://lists.xiph.org/mailman/listinfo/flac-dev</a><br>
&gt;&gt;<br>
&gt; _______________________________________________<br>
&gt; Flac-dev mailing list<br>
&gt; <a href="mailto:Flac-dev@xiph.org">Flac-dev@xiph.org</a><br>
&gt; <a href="http://lists.xiph.org/mailman/listinfo/flac-dev" target="_blank">http://lists.xiph.org/mailman/listinfo/flac-dev</a><br>
&gt;<br>
<br>
_______________________________________________<br>
Flac-dev mailing list<br>
<a href="mailto:Flac-dev@xiph.org">Flac-dev@xiph.org</a><br>
<a href="http://lists.xiph.org/mailman/listinfo/flac-dev" target="_blank">http://lists.xiph.org/mailman/listinfo/flac-dev</a><br>
</div></div></blockquote></div><br>