Ok, I think I got it.
in civetweb.c - either line 1946 or 2135, depending on the OpenSSL interface version - there is a
static struct ssl_func ssl_sw[]
this should not be available in any other file than civetweb.c, since its static
So, maybe you defined ssl_sw somewhere else, and access another symbol with the same name?
ssl_sw in civetweb.c is initialized in line 15898
ssllib_dll_handle = load_dll(ebuf, ebuf_len, SSL_LIB, ssl_sw);
You can get completely rid of ssl_sw by defining NO_SSL_DL. This means, you still use SSL (in contrast to NO_SSL) but you do no "dynamic linking at runtime" DL of OpenSSL libraries, but rather load these libraries as dependencies automatically on load time of your executable. This may help in your case.
Although I think it should still work without setting this define, but I can't tell remotely where to look.