On 2016-12-12 08:30-0000 Arjen Markus wrote: > Hi Alan, > > > >> -----Original Message----- >> From: Alan W. Irwin [mailto:ir...@beluga.phys.uvic.ca] >> Sent: Sunday, December 11, 2016 11:25 PM >> >> Unfortunately, those compiler warnings in the report about "redeclared >> without >> dllimport attribute" (and eventual build failure for the qt device driver) >> don't make a >> lot of sense to me at the present time. > > That is only a warning, the errors that the compiler finds are related to: > > const QMetaObjectExtraData MasterHandler::staticMetaObjectExtraData = { > > The odd thing is that the file moc_qt.cpp contains multiple definitions of > this member as well as the function qt_static_metacall. I cannot find a > version where the dllimport attribute is used. > > I compared the code to the one generated by the regular build (the august > one) and they are identical apart from the file extension (.cpp versus .cxx) > and the timestamp. > > This is really puzzling, I agree with your analysis that there should be no > difference between the two build methods.
Hi Arjen: The short story is I am looking forward to your next report. Here is the longer story. Thanks for those two files. It turns out the key one (qt_moc.cpp) is essentially identical with what moc generates here, i.e., software@raven> diff ~irwin/Arjen.Markus/20161212/cygwin/moc_qt.cpp qt_automoc.dir/moc_qt_2CLBWPDUEWV5LU.cpp 4c4 < ** Created by: The Qt Meta Object Compiler version 63 (Qt 4.8.7) --- > ** Created by: The Qt Meta Object Compiler version 63 (Qt 4.8.6) 9c9 < #include "../../../../../plplot-git/include/qt.h" --- > #include "../../../plplot.git/include/qt.h" 13c13 < #error "This file was generated using the moc from 4.8.7. It" --- > #error "This file was generated using the moc from 4.8.6. It" And we are agreed there is no difference between the qt.cpp build and qt_automoc.cpp build either here or there except that on Linux platforms, we have #define PLDLLIMPORT while on Cygwin platforms we have #define PLDLLIMPORT __declspec( dllimport ) So my best guess is that on Linux (since PLDLLIMPORT is #defined to nothing) we are getting away with something that Cygwin won't allow where PLDLLIMPORT is something other than nothing. In fact, further analysis shows we have qt.so linking with libplplotqt. So libplplotqt (now that the visibility issues with it have been solved) should be supplying all the moc-related symbols that are needed by qt.so. Therefore, it is overkill to do moc generation for the qt.so case, i.e., it is the same Linux workaround scenario that I removed for the pyqt4.so case once I got libplplotqt exporting the moc-related symbols correctly! Therefore, to deal with this overkill workaround, I have removed (commit 35833c7) automoc generation for the qt shared object as well (just like I did previously for pyqt4). And just as in the pyqt4 case, that removal works well on Linux. So I have my fingers crossed that this new slimmed down way to build the qt and pyqt4 shared objects will work fine on Cygwin, and I look forward to your next report that either confirms that or not. But I am strongly hoping for confirmation because otherwise I am completely out of ideas! Alan __________________________ Alan W. Irwin Astronomical research affiliation with Department of Physics and Astronomy, University of Victoria (astrowww.phys.uvic.ca). Programming affiliations with the FreeEOS equation-of-state implementation for stellar interiors (freeeos.sf.net); the Time Ephemerides project (timeephem.sf.net); PLplot scientific plotting software package (plplot.sf.net); the libLASi project (unifont.org/lasi); the Loads of Linux Links project (loll.sf.net); and the Linux Brochure Project (lbproject.sf.net). __________________________ Linux-powered Science __________________________ ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, SlashDot.org! http://sdm.link/slashdot _______________________________________________ Plplot-devel mailing list Plplot-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/plplot-devel