Experimental Physics and
| |||||||||||||||||
|
Hi, It may appear when a source file (in your case the sources for the three .obj files in your error message) does not include a header file for things it uses in the import section of its #include block. The symbols might still be defined (through secondary include by one of your own header files from the export part of the #include block) but in that case they get marked as exported (instead of imported) so the linker searches for them in your objects (not in the libraries). In principle, your source does #include <system-bla> // this is the import section, external symbols are marked as being DLL-imported #include <epics-bla> #include <epicsExport.h> // from here Windows starts marking external symbols as being DLL-exported #include <myHeader.h> #include <myOtherHeader.h> [...] Now, if your source uses pdbbase (which is declared in dbAccessDefs.h), but relies on dbAccessDefs.h being included by myHeader.h, pdbbase will be declared after switching to export mode and be marked as exported, which is wrong. Solution: #include <dbAccessDefs.h> in the source that uses its symbols, in the upper section (*before* including <epicsExport.h>) and it will be marked correctly. Sorry if this sounds complicated. It is. Cheers, ~Ralph On Thu, 20 Dec 2018 at 21:34, Gofron, Kazimierz via Tech-talk <[email protected]> wrote:
| ||||||||||||||||
ANJ, 20 Dec 2018 |
·
Home
·
News
·
About
·
Base
·
Modules
·
Extensions
·
Distributions
·
Download
·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing · |