Jim wrote:

> I'm trying to recompile my source code with the latest release version
> of NSS 3.3.2 and NSPR 4.1.2.


Jim,

If you are upgrading from the old NSS 2.8.x release, you will need
to change your makefiles to link with the new NSS shared libraries
and change your source files if you are using functions that are
no longer exported.

Starting in the NSS 3.2 release, we provide shared libraries and
only support the shared libraries.  Further, we control what symbols
get exported from the shared libraries, so some functions that are
available in NSS 2.8.x are no longer available in NSS 3.x shared
libraries.

> I'm getting this error message during compilation:
> 
> incomplete struct/union/enum CERTCertDBHandleStr: certDBHandle 
> 
> I'm using certDBHandle in the CERT_OpenCertDBFilename function.  I
> looked at certt.h in the include directory and it includes this line:
> typedef struct CERTCertDBHandleStr               CERTCertDBHandle;
> 
> However, CERTCertDBHandleStr is not defined anywhere else in this .h
> or any other .h in the release.  I check the 3.3.1 and 3.3 release and
> they don't define this structure either.


This is intentional.  In NSS 3.x, CERTCertDBHandle is an opaque type,
which means its definition is not in any of the public NSS header files.
So you won't be able to declare a variable of the type CERTCertDBHandle.
Instead, you need to call some function to get a pointer to
CERTCertDBHandle.

I remember this is a common problem when NSS 2.8.x clients upgrade to
NSS 3.x shared libraries.  I'll let Bob Relyea explain how to fix this
problem.

Wan-Teh


Reply via email to