On Mon, 2018-03-19 at 10:54 -0700, H. S. Teoh via Digitalmars-d-learn wrote: > […] > > 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. >
Prompted by this and Adam's emails, which gave me the moral support to getting stuck in to doing something rather than just moaning :-) I think the problem is with the instance of dvb_entry *. The call is actually in a loop: for (auto entry = ptr.c_ptr().first_entry; entry != null; entry = entry.next) { if (entry.channel is null) { continue; } // TODO Shouldn't need this, but it seems needed, why? frontendParameters.logfunc(LOG_INFO, "\nChannel: %s", entry.channel); try { auto scanHandler = ScanHandler_Ptr(frontendParameters.c_ptr(), entry, dmx_fd.value(), &checkFrontend, other_nit, timeout_multiplier); I tried replacing the auto with dvb_entry* and we have the answer: ../../Repositories/Git/Masters/DVBTune/source/channels.d(157): Error: cannot implicitly convert expression `(*this.ptr.c_ptr()).first_entry` of type `libdvbv5_d.dvb_file.dvb_entry*` to `libdvbv5_d.dvb_scan.dvb_entry*` This is most likely an unintended consequence of using DStep: the dvb_entry type is being defined in two distinct modules. Now everything is clear and I just need to find a solution to why two definitions. The error message is still incomprehensible as is though. -- Russel. =========================================== Dr Russel Winder t: +44 20 7585 2200 41 Buckmaster Road m: +44 7770 465 077 London SW11 1EN, UK w: www.russel.org.uk
signature.asc
Description: This is a digitally signed message part