In my Windows build work, I'm getting a lot of warnings like this one:
master.c(67) : warning C4273: 'Ns_MasterLock' : inconsistent dll linkage
..\include\nsthread.h(597) : see previous definition of 'Ns_MasterLock'
The definition is of course in nsthread/master.c, which starts like so:
void Ns_MasterLock(void)
The declaration in include/nsthread.h is:
NS_EXTERN void Ns_MasterLock(void);
include/ns.h has this:
#define NS_EXTERN extern NS_EXPORT
But I believe that is NOT relevent here because master.c, thread.h,
and nsthread.h (correctly) do NOT include ns.h.
Instead, I think it is the separate definition of NS_EXTERN in
nsthread.h that matters when building nsthread. The code there gets
pretty tricky. Tracing the dependencies backwards, I THINK the
relevent bits are:
#ifdef _WIN32
# define NS_EXPORT __declspec(dllexport)
# define NS_IMPORT __declspec(dllimport)
# define NS_EXTERN extern NS_STORAGE_CLASS
# if defined(NSTHREAD_EXPORTS)
# define NS_STORAGE_CLASS NS_EXPORT
# else
# define NS_STORAGE_CLASS NS_IMPORT
# endif
#if defined(__GNUC__) || defined(__MINGW32__)
#define NSTHREAD_EXPORTS
#endif
AFAICT from reading that code, when using Microsoft's compiler
NSTHREAD_EXPORTS is never set, and thus NS_STORAGE_CLASS is never set
to NS_EXPORT, it is always set to NS_IMPORT and thus is wrong when
building nsthread.
Why is that checking which compiler was used anyway? Is the correct
fix simply to set NSTHREAD_EXPORTS unconditionally regardless of the
compiler?
I tried that, and it DOES make the warning for Ns_MasterLock go away.
However, I do still have more serious build errors after that point,
and then additional "inconsistent dll linkage" warnings (for
Ns_ThreadCreate, etc.) despite that change, so I'm not yet entirely
convinced that I correctly diagnosed the problem.
--
Andrew Piskorski <[email protected]>
------------------------------------------------------------------------------
Want excitement?
Manually upgrade your production database.
When you want reliability, choose Perforce
Perforce version control. Predictably reliable.
http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk
_______________________________________________
naviserver-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/naviserver-devel