You can look up both functions using foreign-symbol-pointer to decide which one to call. You'd usually call the right one using foreign-funcall-pointer, but perhaps you can defcfun both and call the right one based on the lookup.
defcfun-ing non-existent functions will yield runtime warnings on some implementations (notably SBCL) so perhaps you might want to implement both the foreign-funcall-pointer and defcfun approaches and conditionalise them accordingly. HTH, Luís On Mon, May 29, 2017, 02:56 Anton Vodonosov <avodono...@yandex.ru> wrote: > Hello, > > OpenSSL renamed function SSLeay to OpenSSL_version_num. > So, so depending on what version of library we work with we > need to call either SSLeay or OpenSSL_version_num. > > What is the best way to do it? > > The following is one approach: > > (or (ignore-errors > (cffi:foreign-funcall "OpenSSL_version_num" :long)) > (ignore-errors > (cffi:foreign-funcall "SSLeay" :long))) > > > but it won't work on Corman Lisp because it doesn't > support cffi:foreign-funcall. > > I would like to be fully portable. Is there a better way? > > Best regards, > - Anton >