Does Indy need special libcrypto.dylib and libssl.dylib on MAC?

I provide libcrypto.1.0.0.dylib and libssl.1.0.0.dylib, and it worked all the time just fine, even with Mojave.

Now I updated to Catalina and the app does not start anymore, and I get errors like

"Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI."

Any idea what I can do about it? Embarcadero state somewhere that this libs does not need to be provided, because they are already installed by the OS, but does indy work with the pre-installed versions or could it cause issues?

Parents
  • "Invalid dylib load. Clients should not load the unversioned libcrypto dylib as it does not have a stable ABI."

    Try calling 'IdOpenSSLSetCanLoadSymLinks(False)' or 'IdOpenSSLSetLoadSymLinksFirst(False)' at program startup (they are declared in the 'IdSSLOpenSSLHeaders' unit) before calling 'TIdHTTP.Get()', that way Indy will attempt to load versioned dylibs before skipping/resorting to unversioned dylibs.

    Embarcadero state somewhere that this libs does not need to be provided, because they are already installed by the OS

    That is old advice, before OpenSSL 1.1.0 was released, and before Apple deprecated support for OpenSSL.

    does indy work with the pre-installed versions

    Hard to say for sure without knowing which versions are installed.  If 1.0.2 or earlier, yes.  If 1.1.0+, no (yet).

    could it cause issues?

    Loading pre-installed versions on modern systems may cause problems, yes.  To avoid any complications, you should provide your own compatible OpenSSL dylibs with your app, and then call Indy's 'IdOpenSSLSetLibPath()' function at startup (it is declared in the 'IdSSLOpenSSLHeaders' unit) to tell Indy which folder to load them from.

Reply Children
  • In my IdSSLOpenSSLHeaders neither of those methods exists.

    Then you are using an outdated version of Indy and need to upgrade.  `IdOpenSSLSetLoadSymLinksFirst()' was added 1 1/2 year ago.  'IdOpenSSLSetCanLoadSymLinks()'. was added 3 months ago.  See Changes for how OpenSSL is loaded on *Nix platforms on Indy's website blog.

    I'm using the Indy version bundled with 10.3.2

    They didn't bundle the latest version of Indy that was available at the time.  That would have at least gotten you the first function, I think.  IIRC, they are planning on bundling a newer Indy in the upcoming 10.3.3.

    PS: Sorry don't see how-to quote in this webforum thingymadingy.

    Start a reply, then highlight the text you want to quote.  A popup menu will appear with the "Quote" option, which will copy the selected text into a quote block at the current caret position in the reply.

  • IIRC, they are planning on bundling the latest Indy in the upcoming 10.3.3.

    Gotcha.

    That _is_ good news. Will check it in the beta.

    Thanks again for your swift response!