I have sat down to explore using the FLAC++ library in Rosegarden ( https://sourceforge.net/projects/rosegarden/ ).
After tweaking the build system to pick up this library, a sample build line for one of our sources becomes:
g++ -c -g3 -O2 -gstabs+3 -Wfatal-errors -DNDEBUG -DBUILD_RELEASE -DNO_TIMING -g0 -O2 -Wall -pipe -DHAVE_LIRC -DHAVE_LIBJACK -DHAVE_ALSA -I/usr/include/qt4/Qt3Support -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtXml -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtCore -I/usr/include/qt4 -DQT3_SUPPORT -I/usr/include/alsa -I/usr/include/FLAC++ -I/usr/include/FLAC -DLITTLE_ENDIAN=1 -D'VERSION="10.02"' -D'CODENAME="Thorn"' -Isrc -D'BUILDKEY="09e8c70e47"' src/base/Composition.cpp -o src/base/Composition.o
(I've included the whole thing in case there is anything I'm not seeing that's of interest beyond the obvious -I/usr/include/FLAC++ -I/usr/include/FLAC)
OK then, the problem is we #include <cassert> and use assert() all over the place, and in the first such file:
assert(m_v == i.m_v);
The build now fails with a new and mysterious error:
src/base/FastVector.h: In member function ‘T& FastVector<T>::at(long int)’:
src/base/FastVector.h:286: error: there are no arguments to ‘assert’ that depend on a template parameter, so a declaration of ‘assert’ must be available
compilation terminated due to -Wfatal-errors.
This error is a direct consequence of adding -I/usr/include/FLAC++ -I/usr/include/FLAC, and it seems to be because FLAC++ (and/or FLAC) has its own definition of assert that's conflicting with the standard definition in <cassert> but that is as far as I have been able to puzzle this out. Google doesn't have much to say about this kind of problem, and none of the apparently stupid things I tried to work around this had any effect.
I feel like a moron for not being able to work this out on my own, but I really don't know what to do here, and as it stands now, I'm not going to be able to use this library after all.
Have you guys seen this before in applications that tried to use your library? Any suggestions how to resolve this conflict?
Log in to post a comment.