cURL / Mailing Lists / curl-library / Single Mail


Re: ERR_remove_thread_state not found in LIBEAY32.dll with mingw-w64

From: K. Frank <>
Date: Sat, 10 Aug 2013 18:42:13 -0400

Hi Daniel!

Thank you. You've jostled me in the right direction.

The short story is that I didn't realize that I have other copies of
libeay32.dll on my system, ahead of libcurl's in my path More
details appear below.

(I've cross-posted this to mingw64, because I cross-posted my
original message there, and didn't want to leave it hanging open.)

On Sat, Aug 10, 2013 at 2:49 PM, Daniel Stenberg <> wrote:
> On Fri, 9 Aug 2013, K. Frank wrote:
>> I have written an compiled a very simple test program and when I run it I
>> get a windows pop-up message box that says:
>> Entry Point Not Found
>> The procedure entry point ERR_remove_thread_state could not
>> be located in the dynamic library LIBEAY32.dll
> This happens when you've built libcurl against OpenSSL >= 1.0.0 while it
> finds an older version at run-time.

Yes, I am finding the wrong version of libeay32.dll at run-time.
(Although I did not build libcurl myself, but simply used what I

>> It is worth noting that the command line curl.exe (that came with the
>> libcurl download) does run without error
> Then it finds the correct DLL at run-time when you invoke curl!

Yes it does, because the right version of libeay32.dll is in the same
bin directory as curl.exe.

>> I have seen some comments that made it sound like ERR_remove_thread_state
>> is new or deprecated or something, and that having a version mismatch
>> between libcurl and libssl could cause this problem. But I believe I am
>> using libcurl and libssl
> libssl perhaps, but the error message clearly said LIBEAY32.dll...

Thanks for emphasizing that I should be focusing my attention on

The detailed explanation is that I didn't recognize the library
libeay32.dll, and therefore wrongly assumed that is was specific
to curl / libcurl, and therefore it didn't occur to me that I might
have other versions of it on my system.

But I do. I ran "where libeay32.dll" (the windows version of the unix
"which" command), and, sure enough, I have copies in intel wireless
and openvpn stuff that appear in my path. I had added the libcurl
bin to the end of my path, so these took precedence (except when
running curl.exe itself, which first finds the correct libeay32.dll in
its own directory before searching the path).

So I re-ran my simple test program after adding libcurl's bin directory
to the front of my path, and now it runs fine (but, as expected, doesn't
do anything).

Now on to a program that actually does something ...

> /

Thanks again for your help.

K. Frank
List admin:
Received on 2013-08-11