Incomprehensible error message

H. S. Teoh hsteoh at quickfur.ath.cx
Mon Mar 19 17:54:44 UTC 2018


On Mon, Mar 19, 2018 at 04:33:28PM +0000, Russel Winder via Digitalmars-d-learn wrote:
[...]
> I have been staring at this message so long, I have clearly stopped
> actually reading it, hence outside assistance needed.
> 
> Can someone please explain to me (probably in words of one syllable
> since I am clearly being very unintelligent) how any code can deliver
> an error message such as:
[...]

Here's my reformatting of the error, that hopefully might be of
assistance:

> source/channels.d(161): Error: constructor
> libdvbv5.ScanHandler_Ptr.this (
>	dvb_v5_fe_parms* frontendParameters,
>	dvb_entry* entry,
>	const(int) dmx_fd,
>	extern (C) int function(void* args, dvb_v5_fe_parms* parms) check_frontend,
>	const(uint) other_nit,
>	const(uint) timeout_multiplier)
> is not callable using argument types (
>	dvb_v5_fe_parms*,
>	dvb_entry*,
>	const(int),
>	extern (C) int function(void* _arguments, dvb_v5_fe_parms* frontendParameters),
>	const(uint),
>	const(uint))
[...]

Or, boiled down to the bare basics with extraneous identifiers removed:

> source/channels.d(161): Error: constructor
> libdvbv5.ScanHandler_Ptr.this (
>	dvb_v5_fe_parms*,
>	dvb_entry*,
>	const(int),
>	extern (C) int function(void*, dvb_v5_fe_parms*),
>	const(uint),
>	const(uint))
> is not callable using argument types (
>	dvb_v5_fe_parms*,
>	dvb_entry*,
>	const(int),
>	extern (C) int function(void*, dvb_v5_fe_parms*),
>	const(uint),
>	const(uint))
[...]

Which is rather odd, since the parameter types correspond to each other
exactly.  So why the compiler would reject the code, I honestly have no
idea.

One wild guess is if some of the symbols come from different modules,
such that you might have modA.dvb_entry vs. modB.dvb_entry, for example,
which would be a type mismatch. Or if one symbol was declared in D
linkage but the other in C linkage, which is perhaps a more likely
cause. But since the compiler doesn't tell us the FQN of the
identifiers, it's anybody's guess whether this is actually the problem,
or which are the offending identifiers.


T

-- 
Prosperity breeds contempt, and poverty breeds consent. -- Suck.com


More information about the Digitalmars-d-learn mailing list