pocoproject / poco

The POCO C++ Libraries are powerful cross-platform C++ libraries for building network- and internet-based applications that run on desktop, server, mobile, IoT, and embedded systems.
https://pocoproject.org
Other
8.04k stars 2.11k forks source link

NetSSL_OpenSSL runtime error on Windows #4590

Open acarioni opened 2 weeks ago

acarioni commented 2 weeks ago

I compiled Poco 1.13.3 using Visual Studio Community Edition 2022 (64-bit) on a Windows 10 Pro system. I used CMake as build system and the POCO pre-built OpenSSL binaries as explained in the Getting Started document. Since CMake was not able to locate the openssl folder, I set the OPENSSL_ROOT_DIR environment variable to point to POCO_BASE/openssl/build/win64/bin/release. After that, the compilation went fine.

However I was not able to run the samples contained in the NetSSL_OpenSSL module. For example I opened NetSSL_OpenSSL/samples/samples_vs170.sln in Visual Studio and tried to run the sample named download.

First I had to change some parameters since the project didn’t compile: • in C/C++>General>Additional Include Directories, I added POCO_BASE/openssl/build/include • in Linker>General>Additional Library Directories, I added POCO_BASE/poco-build/lib • in Debugging>Environment, I added OPENSSL_ROOT_DIR and POCO_BASE/poco-build/bin to PATH environment variable

After that the compilation was successful, but when I tried to run the sample I got the error _The procedure entry point OPENSSL_sknum could not be located in the dynamic library c:\Users\xxx\git\poco\poco-build\bin\PocoNetSSLd.dll.

It appears to be related to the OpenSSL version compatibility, as the OPENSSL_sk_num function is part of the OpenSSL library and may not be present in the version linked during the build process. Could you please provide guidance on resolving this error?

For your reference, these are the compilation options used by CMake to build Poco on my machine:

-- Selecting Windows SDK version 10.0.22621.0 to target Windows 10.0.19045.
-- Checking for C++17 compiler
-- Checking for C++17 compiler - available
-- Found message compiler: C:/Program Files (x86)/Windows Kits/10/bin/10.0.22621.0/x86/mc.exe
-- Could NOT find APR (missing: APR_INCLUDE_DIR APR_LIBRARY)
-- Could NOT find APRUTIL (missing: APRUTIL_INCLUDE_DIR APRUTIL_LIBRARY)
-- Could NOT find Apache2 (missing: APACHE2_INCLUDE_DIR)
-- Could NOT find MySQL (missing: MYSQL_INCLUDE_DIR MYSQL_LIBRARY)
-- Could NOT find PostgreSQL (missing: PostgreSQL_LIBRARY PostgreSQL_INCLUDE_DIR)
-- Building without tests & samples
-- Using internal sqlite, zlib, pcre2, expat, ...
-- CMake 3.29.5 successfully configured Poco using Visual Studio 17 2022 generator
-- Poco package version: 1.13.3
-- Building dynamic libraries
-- [cmake] Installation target path: C:/Program Files (x86)/Poco
-- [cmake] Build for OS type:      Windows
-- [cmake] Build for OS version:   10.0.19045
-- [cmake] Build for CPU type:     AMD64
-- [cmake] Build type:             RelWithDebInfo
-- [cmake] Build with cxx flags:   /MD /Zi /O2 /Ob1 /DNDEBUG /DWIN32 /D_WINDOWS /W3 /GR /EHsc /Zc:__cplusplus
-- [cmake] Build with c flags:     /MD /Zi /O2 /Ob1 /DNDEBUG /DWIN32 /D_WINDOWS /W3
-- [cmake] C++ symbol visibility:
-- Building: Encodings
-- Building: XML
-- Building: JSON
-- Building: Util
-- Building: Net
-- Building: NetSSL_OpenSSL
-- Building: Crypto
-- Configuring done (6.4s)
-- Generating done (1.6s)
-- Build files have been written to: C:/Users/aless/git/poco/poco-build
-- Cache values
APACHE2_INCLUDE_DIR:PATH=APACHE2_INCLUDE_DIR-NOTFOUND
APRUTIL_INCLUDE_DIR:PATH=APRUTIL_INCLUDE_DIR-NOTFOUND
APRUTIL_LIBRARY:FILEPATH=APRUTIL_LIBRARY-NOTFOUND
APR_INCLUDE_DIR:PATH=APR_INCLUDE_DIR-NOTFOUND
APR_LIBRARY:FILEPATH=APR_LIBRARY-NOTFOUND
BUILD_SHARED_LIBS:BOOL=ON
CMAKE_AR:FILEPATH=C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.40.33807/bin/Hostx64/x64/lib.exe
CMAKE_CONFIGURATION_TYPES:STRING=Debug;RelWithDebInfo
CMAKE_CXX_FLAGS:STRING=/DWIN32 /D_WINDOWS /W3 /GR /EHsc
CMAKE_CXX_FLAGS_DEBUG:STRING=/MDd /Zi /Ob0 /Od /RTC1
CMAKE_CXX_FLAGS_MINSIZEREL:STRING=/MD /O1 /Ob1 /DNDEBUG
CMAKE_CXX_FLAGS_RELEASE:STRING=/MD /O2 /Ob2 /DNDEBUG
CMAKE_CXX_FLAGS_RELWITHDEBINFO:STRING=/MD /Zi /O2 /Ob1 /DNDEBUG
CMAKE_CXX_STANDARD_LIBRARIES:STRING=kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib
CMAKE_C_FLAGS:STRING=/DWIN32 /D_WINDOWS /W3
CMAKE_C_FLAGS_DEBUG:STRING=/MDd /Zi /Ob0 /Od /RTC1
CMAKE_C_FLAGS_MINSIZEREL:STRING=/MD /O1 /Ob1 /DNDEBUG
CMAKE_C_FLAGS_RELEASE:STRING=/MD /O2 /Ob2 /DNDEBUG
CMAKE_C_FLAGS_RELWITHDEBINFO:STRING=/MD /Zi /O2 /Ob1 /DNDEBUG
CMAKE_C_STANDARD_LIBRARIES:STRING=kernel32.lib user32.lib gdi32.lib winspool.lib shell32.lib ole32.lib oleaut32.lib uuid.lib comdlg32.lib advapi32.lib
CMAKE_DEBUG_POSTFIX:STRING=d
CMAKE_EXE_LINKER_FLAGS:STRING=/machine:x64
CMAKE_EXE_LINKER_FLAGS_DEBUG:STRING=/debug /INCREMENTAL
CMAKE_EXE_LINKER_FLAGS_MINSIZEREL:STRING=/INCREMENTAL:NO
CMAKE_EXE_LINKER_FLAGS_RELEASE:STRING=/INCREMENTAL:NO
CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO:STRING=/debug /INCREMENTAL
CMAKE_INSTALL_BINDIR:PATH=bin
CMAKE_INSTALL_DATADIR:PATH=
CMAKE_INSTALL_DATAROOTDIR:PATH=share
CMAKE_INSTALL_DOCDIR:PATH=
CMAKE_INSTALL_INCLUDEDIR:PATH=include
CMAKE_INSTALL_INFODIR:PATH=
CMAKE_INSTALL_LIBDIR:PATH=lib
CMAKE_INSTALL_LIBEXECDIR:PATH=libexec
CMAKE_INSTALL_LOCALEDIR:PATH=
CMAKE_INSTALL_LOCALSTATEDIR:PATH=var
CMAKE_INSTALL_MANDIR:PATH=
CMAKE_INSTALL_OLDINCLUDEDIR:PATH=/usr/include
CMAKE_INSTALL_PREFIX:PATH=C:/Program Files (x86)/Poco
CMAKE_INSTALL_RUNSTATEDIR:PATH=
CMAKE_INSTALL_SBINDIR:PATH=sbin
CMAKE_INSTALL_SHAREDSTATEDIR:PATH=com
CMAKE_INSTALL_SYSCONFDIR:PATH=etc
CMAKE_LINKER:FILEPATH=C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/14.40.33807/bin/Hostx64/x64/link.exe
CMAKE_MC_COMPILER:FILEPATH=C:/Program Files (x86)/Windows Kits/10/bin/10.0.22621.0/x86/mc.exe
CMAKE_MINSIZEREL_POSTFIX:STRING=
CMAKE_MODULE_LINKER_FLAGS:STRING=/machine:x64
CMAKE_MODULE_LINKER_FLAGS_DEBUG:STRING=/debug /INCREMENTAL
CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL:STRING=/INCREMENTAL:NO
CMAKE_MODULE_LINKER_FLAGS_RELEASE:STRING=/INCREMENTAL:NO
CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO:STRING=/debug /INCREMENTAL
CMAKE_MT:FILEPATH=C:/Program Files (x86)/Windows Kits/10/bin/10.0.22621.0/x86/mt.exe
CMAKE_RC_COMPILER:FILEPATH=C:/Program Files (x86)/Windows Kits/10/bin/10.0.22621.0/x86/rc.exe
CMAKE_RC_FLAGS:STRING=-DWIN32
CMAKE_RC_FLAGS_DEBUG:STRING=-D_DEBUG
CMAKE_RC_FLAGS_MINSIZEREL:STRING=
CMAKE_RC_FLAGS_RELEASE:STRING=
CMAKE_RC_FLAGS_RELWITHDEBINFO:STRING=
CMAKE_RELEASE_POSTFIX:STRING=
CMAKE_RELWITHDEBINFO_POSTFIX:STRING=
CMAKE_SHARED_LINKER_FLAGS:STRING=/machine:x64
CMAKE_SHARED_LINKER_FLAGS_DEBUG:STRING=/debug /INCREMENTAL
CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL:STRING=/INCREMENTAL:NO
CMAKE_SHARED_LINKER_FLAGS_RELEASE:STRING=/INCREMENTAL:NO
CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO:STRING=/debug /INCREMENTAL
CMAKE_SKIP_INSTALL_RPATH:BOOL=OFF
CMAKE_SKIP_RPATH:BOOL=OFF
CMAKE_STATIC_LINKER_FLAGS:STRING=/machine:x64
CMAKE_STATIC_LINKER_FLAGS_DEBUG:STRING=
CMAKE_STATIC_LINKER_FLAGS_MINSIZEREL:STRING=
CMAKE_STATIC_LINKER_FLAGS_RELEASE:STRING=
CMAKE_STATIC_LINKER_FLAGS_RELWITHDEBINFO:STRING=
CMAKE_VERBOSE_MAKEFILE:BOOL=OFF
CPACK_BINARY_7Z:BOOL=OFF
CPACK_BINARY_IFW:BOOL=OFF
CPACK_BINARY_INNOSETUP:BOOL=OFF
CPACK_BINARY_NSIS:BOOL=ON
CPACK_BINARY_NUGET:BOOL=OFF
CPACK_BINARY_WIX:BOOL=OFF
CPACK_BINARY_ZIP:BOOL=OFF
CPACK_SOURCE_7Z:BOOL=ON
CPACK_SOURCE_ZIP:BOOL=ON
CYGWIN_BAT:FILEPATH=CYGWIN_BAT-NOTFOUND
ENABLE_ACTIVERECORD:BOOL=OFF
ENABLE_ACTIVERECORD_COMPILER:BOOL=OFF
ENABLE_APACHECONNECTOR:BOOL=OFF
ENABLE_COMPILER_WARNINGS:BOOL=OFF
ENABLE_CPPPARSER:BOOL=OFF
ENABLE_CRYPTO:BOOL=ON
ENABLE_DATA:BOOL=OFF
ENABLE_DATA_MYSQL:BOOL=OFF
ENABLE_DATA_ODBC:BOOL=OFF
ENABLE_DATA_POSTGRESQL:BOOL=OFF
ENABLE_DATA_SQLITE:BOOL=OFF
ENABLE_DATA_SQLITE_FTS5:BOOL=OFF
ENABLE_ENCODINGS:BOOL=ON
ENABLE_ENCODINGS_COMPILER:BOOL=OFF
ENABLE_FOUNDATION:BOOL=ON
ENABLE_JSON:BOOL=ON
ENABLE_JWT:BOOL=OFF
ENABLE_MONGODB:BOOL=OFF
ENABLE_NET:BOOL=ON
ENABLE_NETSSL:BOOL=ON
ENABLE_NETSSL_WIN:BOOL=OFF
ENABLE_PAGECOMPILER:BOOL=OFF
ENABLE_PAGECOMPILER_FILE2PAGE:BOOL=OFF
ENABLE_PDF:BOOL=OFF
ENABLE_POCODOC:BOOL=OFF
ENABLE_PROMETHEUS:BOOL=OFF
ENABLE_REDIS:BOOL=OFF
ENABLE_SAMPLES:BOOL=OFF
ENABLE_SEVENZIP:BOOL=OFF
ENABLE_TESTS:BOOL=OFF
ENABLE_TEST_DEPRECATED:BOOL=OFF
ENABLE_UTIL:BOOL=ON
ENABLE_XML:BOOL=ON
ENABLE_ZIP:BOOL=OFF
FORCE_OPENSSL:BOOL=OFF
LIB_EAY_DEBUG:FILEPATH=C:/Users/aless/git/poco/openssl/build/win64/bin/release/libcrypto.lib
LIB_EAY_RELEASE:FILEPATH=C:/Users/aless/git/poco/openssl/build/win64/bin/release/libcrypto.lib
MSVC_REDIST_DIR:PATH=C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Redist/MSVC/14.40.33807
MYSQL_INCLUDE_DIR:PATH=MYSQL_INCLUDE_DIR-NOTFOUND
MYSQL_LIBRARY:FILEPATH=MYSQL_LIBRARY-NOTFOUND
ODBC_INCLUDE_DIR:PATH=C:/Program Files (x86)/Windows Kits/10/Include/10.0.22621.0/um
ODBC_LIBRARY:FILEPATH=C:/Program Files (x86)/Windows Kits/10/Lib/10.0.22621.0/um/x86/odbc32.lib
OPENSSL_APPLINK_SOURCE:FILEPATH=C:/Users/aless/git/poco/openssl/build/win64/bin/release/include/openssl/applink.c
OPENSSL_INCLUDE_DIR:PATH=C:/Users/aless/git/poco/openssl/build/win64/bin/release/include
PKG_CONFIG_ARGN:STRING=
PKG_CONFIG_EXECUTABLE:FILEPATH=PKG_CONFIG_EXECUTABLE-NOTFOUND
POCO_DATA_NO_SQL_PARSER:BOOL=OFF
POCO_DISABLE_INTERNAL_OPENSSL:BOOL=ON
POCO_ENABLE_STD_MUTEX:BOOL=OFF
POCO_MT:BOOL=OFF
POCO_NO_FORK_EXEC:BOOL=OFF
POCO_UNBUNDLED:BOOL=OFF
PostgreSQL_INCLUDE_DIR:PATH=PostgreSQL_INCLUDE_DIR-NOTFOUND
PostgreSQL_LIBRARY:FILEPATH=PostgreSQL_LIBRARY-NOTFOUND
SSL_EAY_DEBUG:FILEPATH=C:/Users/aless/git/poco/openssl/build/win64/bin/release/libssl.lib
SSL_EAY_RELEASE:FILEPATH=C:/Users/aless/git/poco/openssl/build/win64/bin/release/libssl.lib
STATIC_POSTFIX:STRING=md