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
