Hi, I am hoping somebody can set me straight on this. I haven't been able to figure it out over the last few days.
I have ported to 0.9.8E from 0.9.7E, and am having trouble getting the CRYPTO shareable image to link. Probably serves me right for waiting for so long to port. ;-) I am trying to do this on OpenVMS V7.3-2, with DEC C V7.1. The error that I am seeing is shown below. To me, it looks like there is no global declaration of V_CHECK, only external declarations: $ search crypto$res:[ossl.build_0300_alpha_64]makevms.log "-W-" %LINK-W-NUDFSYMS, 9 undefined symbols: %LINK-W-USEUNDEFSYMV, undefined symbol ENGINE_LOAD_UBSEC referenced in symbol vector option %LINK-W-USEUNDEFSYMV, undefined symbol ENGINE_LOAD_CSWIFT referenced in symbol vector option %LINK-W-USEUNDEFSYMV, undefined symbol ENGINE_LOAD_NURON referenced in symbol vector option %LINK-W-USEUNDEFSYMV, undefined symbol ENGINE_LOAD_CHIL referenced in symbol vector option %LINK-W-USEUNDEFSYMV, undefined symbol ENGINE_LOAD_ATALLA referenced in symbol vector option %LINK-W-USEUNDEFSYMV, undefined symbol ENGINE_LOAD_AEP referenced in symbol vector option %LINK-W-USEUNDEFSYMV, undefined symbol ENGINE_LOAD_SUREWARE referenced in symbol vector option %LINK-W-USEUNDEFSYMV, undefined symbol ENGINE_LOAD_4758CCA referenced in symbol vector option %LINK-W-USEUNDEFSYMV, undefined symbol ENGINE_LOAD_GMP referenced in symbol vector option %LINK-W-SHRWRNERS, compilation warnings in shareable image file CRYPTO$RES:[OSSL.BUILD_0300_ALPHA_64.ALPHA.EXE.CRYPTO]SSL$LIBCRYPTO_SHR.EXE;11 $ I also found the following change in the CVS history for ENGINE.H. To me this looks like it is changing V_CHECK from a global declaration to an external reference: --- engine.h 2005/07/16 11:13:06 1.57.2.1 +++ engine.h 2005/11/06 17:48:59 1.57.2.2 @@ -637,7 +637,7 @@ * can be fully instantiated with IMPLEMENT_DYNAMIC_CHECK_FN(). */ typedef unsigned long (*dynamic_v_check_fn)(unsigned long ossl_version); #define IMPLEMENT_DYNAMIC_CHECK_FN() \ - unsigned long v_check(unsigned long v) { \ + OPENSSL_EXPORT unsigned long v_check(unsigned long v) { \ if(v >= OSSL_DYNAMIC_OLDEST) return OSSL_DYNAMIC_VERSION; \ return 0; } @@ -659,6 +659,7 @@ typedef int (*dynamic_bind_engine)(ENGINE *e, const char *id, const dynamic_fns *fns); #define IMPLEMENT_DYNAMIC_BIND_FN(fn) \ + OPENSSL_EXPORT \ int bind_engine(ENGINE *e, const char *id, const dynamic_fns *fns) { \ if(ENGINE_get_static_state() == fns->static_state) goto skip_cbs; \ if(!CRYPTO_set_mem_functions(fns->mem_fns.malloc_cb, \ Any comments or clarifications will be appreciated. Thanks, Kevin Greaney