trinity-devel@lists.pearsoncomputing.net

Message: previous - next
Month: January 2014

[SOLVED]Re: [trinity-devel] k3b FTBFS - error: invalid use of incomplete type 'mpc_decoder {aka struct mpc_decoder_t}'

From: "David C. Rankin" <drankinatty@...>
Date: Sat, 25 Jan 2014 03:44:47 -0600
On 01/23/2014 10:01 AM, David C. Rankin wrote:
> On 01/22/2014 06:33 AM, David C. Rankin wrote:
>> All,
>>
>>   k3b looks like it needs a lot of work. I vaguely recall fixing numerous
>> out-of-scope issues when gcc 4.7 emerged, but have forgotten the details.
>> Building k3d, the following are a number of errors resulting in the FTBFS. I
>> have summarized the errors themselves below. From the summary it looks like the
>> error: invalid use of incomplete type 'mpc_decoder {aka struct mpc_decoder_t}'
>> at k3bmpcwrapper.cpp:77:28 starts the domino falling. If that could be fixed,
>> then it may resolve a number of the remaining errors. So c++ gurus, "What is the
>> proper way to do that?"
>>
>>
>>   Summary of the errors:
>>
>> k3bmpcwrapper.cpp:77:28: error: invalid use of incomplete type 'mpc_decoder
>> /usr/include/mpc/mpcdec.h:55:16: error: forward declaration of 'mpc_decoder
>> k3bmpcwrapper.cpp:88:10: note: neither the destructor nor the class-specific
>> operator delete will be called, even if they are declared when the class is defined
>> k3bmpcwrapper.cpp:101:33: error: 'mpc_streaminfo_init' was not declared in this
>> scope
>> k3bmpcwrapper.cpp:102:47: error: 'mpc_streaminfo_read' was not declared in this
>> scope
>> k3bmpcwrapper.cpp:102:52: error: 'ERROR_CODE_OK' was not declared in this scope
>> k3bmpcwrapper.cpp:107:46: error: 'mpc_decoder_setup' was not declared in this scope
>> k3bmpcwrapper.cpp:108:54: error: 'mpc_decoder_initialize' was not declared in
>> this scope
>> k3bmpcwrapper.cpp:136:77: error: 'mpc_decoder_decode' was not declared in this scope
>> k3bmpcwrapper.cpp:173:78: error: 'mpc_decoder_seek_seconds' was not declared in
>> this scope
>>
> 
>   The code complained of is in:
> 
> k3b/src/plugins/decoder/musepack/k3bmpcwrapper.cpp:
> 
> K3bMpcWrapper::K3bMpcWrapper()
> {
>   m_input = new TQFile();
> 
>   m_reader           = new mpc_reader;
>   m_reader->read     = read_impl;
>   m_reader->seek     = seek_impl;
>   m_reader->tell     = tell_impl;
>   m_reader->get_size = get_size_impl;
>   m_reader->canseek  = canseek_impl;
>   m_reader->data     = m_input;
> 
>   m_decoder          = new mpc_decoder;
> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
>   m_info             = new mpc_streaminfo;
> }
> 
>   The earlier warning complain of invalid conversions for each of the members in
> the constructor, but the error complains about the new mpc_decoder instance. I
> don't see what it is complaining about, it will take one of the smarter c++ guys
> looking at the code.
> 
>   Filed as blocker since k3b must build in order for k9copy to build on nohal
> systems:
> 
> http://bugs.pearsoncomputing.net/show_bug.cgi?id=1858
> 

In all its glory. the problem was a bad header file in musepack-tools-svn
(mpcdec.h) that ws an older version of the file. Replacing the headers with the
proper files from libmpcdec allowed k3b to build!


-- 
David C. Rankin, J.D.,P.E.