<div dir="ltr">This is from GIT master. Problem still exists, but I could try disabling unit tests and continue. I hope it gets fixed anyway soon so that other users wouldn't run into the same problem.</div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Feb 3, 2017 at 12:08 AM, Jaroslaw Staniek <span dir="ltr"><<a href="mailto:staniek@kde.org" target="_blank">staniek@kde.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:monospace,monospace;font-size:small"><br></div><div class="gmail_extra"><br><div class="gmail_quote"><span class="">On 1 February 2017 at 14:34, David Faure <span dir="ltr"><<a href="mailto:faure@kde.org" target="_blank">faure@kde.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">On mardi 31 janvier 2017 07:58:15 CET Jasem Mutlaq wrote:<br>
> Hello,<br>
><br>
> KConfig used to work perfectly fine under Windows. I recently tried to<br>
> compile KStars under Windows 10 (64bit) with MSVC 2015 and Qt 5.8 using<br>
> Craft, but encountered an issue as explained in this bug report:<br>
><br>
> <a href="https://bugs.kde.org/show_bug.cgi?id=375654" rel="noreferrer" target="_blank">https://bugs.kde.org/show_bug.<wbr>cgi?id=<div style="font-family:monospace,monospace;font-size:small;display:inline" class="gmail_default">​​</div>375654</a><br>
><br>
> I talked with Craft maintainers (Hannah et al) and they told me this was an<br>
> issue from KConfig side, not Craft. Can someone please look into this and<br>
> fix it as it our release is dependent on this.<br>
<br>
KF5ConfigCore.lib(KF5ConfigCor<wbr>e.dll) : error LNK2005: "public: class QMap<struct<br>
KEntryKey,struct KEntry>::iterator __cdecl KEntryMap::findEntry(class<br>
QByteArray const &,class QByteArray const &,class QFlags<enum<br>
KEntryMap::SearchFlag>)" (?findEntry@KEntryMap@@QEAA?AV<wbr>ite<br>
rator@?$QMap@UKEntryKey@@UKEnt<wbr>ry@@@@AEBVQByteArray@@0V?<br>
$QFlags@W4SearchFlag@KEntryMap<wbr>@@@@@Z)<br>
already defined in kconfigdata.cpp.obj<br>
<br>
Thanks MSVC for a very readable error message as always ;)<br>
<br>
One note though: this is a failure to link a unittest, your release isn't<br>
blocked, you can just disable the building of unittests in kconfig.<br>
<br>
The double definition can be explained, the unittest links to KF5ConfigCore<br>
and then also compiles in ../src/core/kconfigdata.cpp because that class is not<br>
exported. </blockquote></span><div><br><div style="font-family:monospace,monospace;font-size:small" class="gmail_default">Hi,<br>Apparently it is since eab822e20620 (Jan 15).<br>​The bug #​375654<span class="m_-8275395205812050032m_5355384135402510255m_-6004234993364865412gmail-"> does not seem to provide version info but the fix isn't just released, right? </span>CC'd Stephen Kelly.<br></div><div style="font-family:monospace,monospace;font-size:small" class="gmail_default"><span class="m_-8275395205812050032m_5355384135402510255m_-6004234993364865412gmail-"><br></span></div><div style="font-family:monospace,monospace;font-size:small" class="gmail_default">I don't see much to blame MSVS for here, even the message is rather clear: the binary being linked (not compiled) already contains the symbol. <br>I'd avoid hacks such as (kconfig/autotests/CMakeLists.<wbr>txt):<br><br>set(kentrymaptest_SRCS kentrymaptest.cpp ../src/core/kconfigdata.cpp)<br><br></div><div style="font-family:monospace,monospace;font-size:small" class="gmail_default">Now since eab822e20620 the class is exported and all the other symbols are inline so the hack isn't needed. Anyone, feel free make a general fix.<br><br>PS: The topic isn't linker-dependent, just the Microsoft's linker demonstrated consequences of the hack. <br>Going further for quality, exporting just for test is suboptimal so it's a good practice to export only for tests this way by using special macros:<br><br>Calligra for many years: <a href="https://api.kde.org/bundled-apps-api/calligra-apidocs/libs/main/html/komain__export_8h_source.html" target="_blank">https://api.kde.org/bundled-ap<wbr>ps-api/calligra-apidocs/libs/m<wbr>ain/html/komain__export_8h_sou<wbr>rce.html</a><br><br>KDb: <a href="https://cgit.kde.org/kdb.git/tree/src/config-kdb.h.cmake#n43" target="_blank">https://cgit.kde.org/kdb.git/t<wbr>ree/src/config-kdb.h.cmake#n43</a><br><br></div><div style="font-family:monospace,monospace;font-size:small" class="gmail_default">I'd recommend this not just for frameworks (or do we have this in ECM already?).<br></div><div style="font-family:monospace,monospace;font-size:small" class="gmail_default">Obviously CMake's generate_export_header() does not support it but IMHO it would.<br></div><div style="font-family:monospace,monospace;font-size:small" class="gmail_default">Then the extra cmake conditions would not be needed.<br></div><br><div style="font-family:monospace,monospace;font-size:small" class="gmail_default">​So maybe that would be even better fix for KConfigData tests.​</div><br> </div><span class=""><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">This is something we do in quite a number of other places too,<br>
always for autotests.<br>
<br>
kde-windows people, if you confirm there is no way to make this work<br>
(some linker flag maybe?), then I do see one solution: the one used by Qt (and<br>
konqueror), which is an export macro that only exports the class when<br>
compilation of autotests is enabled. See konqueror/src/konqprivate_expo<wbr>rt.h<br>
for an example.<br>
<span class="m_-8275395205812050032m_5355384135402510255m_-6004234993364865412gmail-HOEnZb"><font color="#888888"><br>
--<br>
David Faure, <a href="mailto:faure@kde.org" target="_blank">faure@kde.org</a>, <a href="http://www.davidfaure.fr" rel="noreferrer" target="_blank">http://www.davidfaure.fr</a><br>
Working on KDE Frameworks 5<br>
<br>
</font></span></blockquote></span></div><span class="HOEnZb"><font color="#888888"><br><br clear="all"><br>-- <br><div class="m_-8275395205812050032m_5355384135402510255m_-6004234993364865412gmail_signature">regards, Jaroslaw Staniek<br><br>KDE:<br>: A world-wide network of software engineers, artists, writers, translators<br>: and facilitators committed to Free Software development - <a href="http://kde.org" target="_blank">http://kde.org</a><br>Calligra Suite:<br>: A graphic art and office suite - <a href="http://calligra.org" target="_blank">http://calligra.org</a><br>Kexi:<br>: A visual database apps builder - <a href="http://calligra.org/kexi" target="_blank">http://calligra.org/kexi</a><br>Qt Certified Specialist:<br>: <a href="http://www.linkedin.com/in/jstaniek" target="_blank">http://www.linkedin.com/in/jst<wbr>aniek</a></div>
</font></span></div></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>Best Regards,<br>Jasem Mutlaq<br></div><div><br></div></div></div>
</div>