ithewei / libhv

🔥 比libevent/libuv/asio更易用的网络库。A c/c++ network library for developing TCP/UDP/SSL/HTTP/WebSocket/MQTT client/server.
https://github.com/ithewei/libhv/wiki
BSD 3-Clause "New" or "Revised" License
6.8k stars 1.23k forks source link

Libhv Integration to Unreal Engine 5 Windows gives library link error. #470

Closed ffreality closed 10 months ago

ffreality commented 11 months ago

I want to build libhv for Windows (cmake and Visual Studio 2022) with these cmake configurations and integrate it to Unreal Engine 5 game engine to create server instances.

I tried both

also included results to my Unreal Plugin. (I know third party library integration and DLL delayed load workflow and I created PDFium, Realsense plugins, before)

WITH_EVPP:BOOL=0
WITH_WEPOLL:BOOL=0
OPENSSL_INCLUDE_DIR:PATH=E:/Epic/Engines/UE_5.3/Engine/Source/ThirdParty/OpenSSL/1.1.1t/include/Win64/VS2015
BUILD_EXAMPLES:BOOL=0
LIB_EAY_RELEASE:FILEPATH=E:/Epic/Engines/UE_5.3/Engine/Source/ThirdParty/OpenSSL/1.1.1t/lib/Win64/VS2015/Release/libcrypto.lib
WITH_HTTP_CLIENT:BOOL=0
SSL_EAY_RELEASE:FILEPATH=E:/Epic/Engines/UE_5.3/Engine/Source/ThirdParty/OpenSSL/1.1.1t/lib/Win64/VS2015/Release/libssl.lib
CMAKE_CONFIGURATION_TYPES:STRING=Debug;Release;MinSizeRel;RelWithDebInfo
OPENSSL_APPLINK_SOURCE:FILEPATH=E:/Epic/Projects/FROZEN/SDKs/FF_Plugins/Plugins/FF_OpenSSL/Source/FF_OpenSSL/ThirdParty/openssl/Win64/applink.c
WITH_OPENSSL:BOOL=1

But I got these library errors about libhv. When I comment out libhv function, there is no error.

1>   Creating library E:\Epic\Projects\FROZEN\SDKs\FF_Plugins\Plugins\FF_HTTP\Intermediate\Build\Win64\x64\UnrealEditor\Development\FF_HTTP\UnrealEditor-FF_HTTP.sup.lib and object E:\Epic\Projects\FROZEN\SDKs\FF_Plugins\Plugins\FF_HTTP\Intermediate\Build\Win64\x64\UnrealEditor\Development\FF_HTTP\UnrealEditor-FF_HTTP.sup.exp
1>Module.FF_HTTP.cpp.obj : error LNK2019: unresolved external symbol __imp_http_method_enum referenced in function "private: virtual void __cdecl FHTTP_Server_libhv_Thread::Callback_HTTP_Start(void)" (?Callback_HTTP_Start@FHTTP_Server_libhv_Thread@@EEAAXXZ)
1>Module.FF_HTTP.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: int __cdecl HttpMessage::String(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > const &)" (__imp_?String@HttpMessage@@QEAAHAEBV?$basic_string@DU?$char_traits@D@std@@V?$allocator@D@2@@std@@@Z) referenced in function "private: virtual int __cdecl std::_Func_impl_no_alloc<class `private: virtual void __cdecl FHTTP_Server_libhv_Thread::Callback_HTTP_Start(void)'::`2'::<lambda_1>,int,class HttpRequest *,class HttpResponse *>::_Do_call(class HttpRequest * &&,class HttpResponse * &&)" (?_Do_call@?$_Func_impl_no_alloc@V<lambda_1>@?1??Callback_HTTP_Start@FHTTP_Server_libhv_Thread@@EEAAXXZ@HPEAVHttpRequest@@PEAVHttpResponse@@@std@@EEAAH$$QEAPEAVHttpRequest@@$$QEAPEAVHttpResponse@@@Z)
1>Module.FF_HTTP.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl hv::HttpService::HttpService(void)" (__imp_??0HttpService@hv@@QEAA@XZ) referenced in function "public: __cdecl FHTTP_Server_libhv_Thread::FHTTP_Server_libhv_Thread(class AHTTP_Server_libhv *)" (??0FHTTP_Server_libhv_Thread@@QEAA@PEAVAHTTP_Server_libhv@@@Z)
1>Module.FF_HTTP.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: void __cdecl hv::HttpService::AddRoute(char const *,enum http_method,struct http_handler const &)" (__imp_?AddRoute@HttpService@hv@@QEAAXPEBDW4http_method@@AEBUhttp_handler@@@Z) referenced in function "private: virtual void __cdecl FHTTP_Server_libhv_Thread::Callback_HTTP_Start(void)" (?Callback_HTTP_Start@FHTTP_Server_libhv_Thread@@EEAAXXZ)
1>Module.FF_HTTP.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) public: __cdecl hv::HttpService::~HttpService(void)" (__imp_??1HttpService@hv@@QEAA@XZ) referenced in function "public: virtual __cdecl FHTTP_Server_libhv_Thread::~FHTTP_Server_libhv_Thread(void)" (??1FHTTP_Server_libhv_Thread@@UEAA@XZ)
1>Module.FF_HTTP.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) int __cdecl http_server_run(struct http_server_s *,int)" (__imp_?http_server_run@@YAHPEAUhttp_server_s@@H@Z) referenced in function "private: virtual void __cdecl FHTTP_Server_libhv_Thread::Callback_HTTP_Start(void)" (?Callback_HTTP_Start@FHTTP_Server_libhv_Thread@@EEAAXXZ)
1>Module.FF_HTTP.cpp.obj : error LNK2019: unresolved external symbol "__declspec(dllimport) int __cdecl http_server_stop(struct http_server_s *)" (__imp_?http_server_stop@@YAHPEAUhttp_server_s@@@Z) referenced in function "public: virtual __cdecl FHTTP_Server_libhv_Thread::~FHTTP_Server_libhv_Thread(void)" (??1FHTTP_Server_libhv_Thread@@UEAA@XZ)
1>E:\Epic\Projects\FROZEN\SDKs\FF_Plugins\Plugins\FF_HTTP\Binaries\Win64\UnrealEditor-FF_HTTP.dll : fatal error LNK1120: 7 unresolved externals

Any suggestion for these ?

FHTTP_Server_libhv_Thread = My Unreal Engine FRunnableThread class. We don't want to block game thread while server working. So, we create a thread and assign it to this class. All functions inside work in their own and single thread.

Callback_HTTP_Start = my starter function like your example's main

ithewei commented 11 months ago

WITH_EVPP should be ON, it is required by the http module.

ffreality commented 11 months ago

If I open both BUILD_FOR_MT and WITH_EVPP on Windows, I can't build libhv as shared library (DLL). It gives error. I can build it as static library but Unreal Engine gives same error as my previous post.

I disabled BUILD_FOR_MT and built it as shared library (DLL) with WITH_EVPP on, Unreal Engine works but if MT means multithread, this is problematic.

ithewei commented 11 months ago

Add precompiled macro HV_STATICLIB if use hv static library. Please refer to FAQ

ffreality commented 11 months ago

Hello again, I added HV_STATICLIB macro and Unreal Engine opened but when I try to package project as .exe it gave this error.

UATHelper: Packaging (Windows): hv_static.lib(nio.obj) : error LNK2005: hio_close already defined in coremod.lib(hio.obj)
UATHelper: Packaging (Windows): hv_static.lib(nio.obj) : error LNK2005: hio_read already defined in coremod.lib(hio.obj)

After that I tried to integrate shared library. If BUILD_FOR_MT = false, Unreal Engine opens and I can package project.

But when I try to make BUILD_FOR_MT = true, libhv build give this error. Btw. I set OpenSSL 1.1.1t static library paths from CMake.

2>   Creating library E:/Github/C++/HTTP/libhv/Builds/Shared_MT/lib/Release/hv.lib and object E:/Github/C++/HTTP/libhv/Builds/Shared_MT/lib/Release/hv.exp
2>LINK : warning LNK4217: symbol '__stdio_common_vsprintf' defined in 'libucrt.lib(output.obj)' is imported by 'libssl.lib(ssl_lib.obj)' in function '_vsnprintf_l'
2>LINK : warning LNK4286: symbol '__stdio_common_vsprintf' defined in 'libucrt.lib(output.obj)' is imported by 'libcrypto.lib(cryptlib.obj)'
2>LINK : warning LNK4286: symbol '__stdio_common_vsprintf' defined in 'libucrt.lib(output.obj)' is imported by 'libcrypto.lib(dso_win32.obj)'
2>LINK : warning LNK4286: symbol '_time64' defined in 'libucrt.lib(time.obj)' is imported by 'libcrypto.lib(drbg_lib.obj)'
2>LINK : warning LNK4286: symbol '_time64' defined in 'libucrt.lib(time.obj)' is imported by 'libcrypto.lib(ct_policy.obj)'
2>LINK : warning LNK4286: symbol '_time64' defined in 'libucrt.lib(time.obj)' is imported by 'libcrypto.lib(ocsp_cl.obj)'
2>LINK : warning LNK4286: symbol '_time64' defined in 'libucrt.lib(time.obj)' is imported by 'libcrypto.lib(x509_vfy.obj)'
2>LINK : warning LNK4286: symbol '_time64' defined in 'libucrt.lib(time.obj)' is imported by 'libcrypto.lib(a_time.obj)'
2>LINK : warning LNK4286: symbol '_time64' defined in 'libucrt.lib(time.obj)' is imported by 'libssl.lib(statem_clnt.obj)'
2>LINK : warning LNK4286: symbol '_time64' defined in 'libucrt.lib(time.obj)' is imported by 'libssl.lib(ssl_asn1.obj)'
2>LINK : warning LNK4286: symbol '_time64' defined in 'libucrt.lib(time.obj)' is imported by 'libssl.lib(extensions_srvr.obj)'
2>LINK : warning LNK4286: symbol '_time64' defined in 'libucrt.lib(time.obj)' is imported by 'libssl.lib(extensions_clnt.obj)'
2>LINK : warning LNK4217: symbol '_time64' defined in 'libucrt.lib(time.obj)' is imported by 'libssl.lib(ssl_lib.obj)' in function 'ssl_update_cache'
2>LINK : warning LNK4286: symbol '_time64' defined in 'libucrt.lib(time.obj)' is imported by 'libssl.lib(ssl_sess.obj)'
2>LINK : warning LNK4286: symbol '_time64' defined in 'libucrt.lib(time.obj)' is imported by 'libssl.lib(statem_srvr.obj)'
2>LINK : warning LNK4286: symbol '_time64' defined in 'libucrt.lib(time.obj)' is imported by 'libssl.lib(s3_lib.obj)'
2>LINK : warning LNK4286: symbol 'strncmp' defined in 'libucrt.lib(strncmp.obj)' is imported by 'libcrypto.lib(asn_mime.obj)'
2>LINK : warning LNK4217: symbol 'strncmp' defined in 'libucrt.lib(strncmp.obj)' is imported by 'libcrypto.lib(asn1_gen.obj)' in function 'bitstr_cb'
2>LINK : warning LNK4286: symbol 'strncmp' defined in 'libucrt.lib(strncmp.obj)' is imported by 'libcrypto.lib(loader_file.obj)'
2>LINK : warning LNK4286: symbol 'strncmp' defined in 'libucrt.lib(strncmp.obj)' is imported by 'libcrypto.lib(a_strnid.obj)'
2>LINK : warning LNK4286: symbol 'strncmp' defined in 'libucrt.lib(strncmp.obj)' is imported by 'libcrypto.lib(store_lib.obj)'
2>LINK : warning LNK4286: symbol 'strncmp' defined in 'libucrt.lib(strncmp.obj)' is imported by 'libcrypto.lib(eng_fat.obj)'
2>LINK : warning LNK4286: symbol 'strncmp' defined in 'libucrt.lib(strncmp.obj)' is imported by 'libcrypto.lib(v3_cpols.obj)'
2>LINK : warning LNK4286: symbol 'strncmp' defined in 'libucrt.lib(strncmp.obj)' is imported by 'libcrypto.lib(v3_pci.obj)'
2>LINK : warning LNK4286: symbol 'strncmp' defined in 'libucrt.lib(strncmp.obj)' is imported by 'libcrypto.lib(conf_def.obj)'
2>LINK : warning LNK4286: symbol 'strncmp' defined in 'libucrt.lib(strncmp.obj)' is imported by 'libcrypto.lib(v3_utl.obj)'
2>LINK : warning LNK4286: symbol 'strncmp' defined in 'libucrt.lib(strncmp.obj)' is imported by 'libcrypto.lib(v3_crld.obj)'
2>LINK : warning LNK4286: symbol 'strncmp' defined in 'libucrt.lib(strncmp.obj)' is imported by 'libcrypto.lib(v3_ncons.obj)'
2>LINK : warning LNK4286: symbol 'strncmp' defined in 'libucrt.lib(strncmp.obj)' is imported by 'libcrypto.lib(v3_conf.obj)'
2>LINK : warning LNK4286: symbol 'strncmp' defined in 'libucrt.lib(strncmp.obj)' is imported by 'libssl.lib(d1_srtp.obj)'
2>LINK : warning LNK4286: symbol 'strncmp' defined in 'libucrt.lib(strncmp.obj)' is imported by 'libcrypto.lib(by_dir.obj)'
2>LINK : warning LNK4286: symbol 'strncmp' defined in 'libucrt.lib(strncmp.obj)' is imported by 'libcrypto.lib(pem_lib.obj)'
2>LINK : warning LNK4286: symbol 'strncmp' defined in 'libucrt.lib(strncmp.obj)' is imported by 'libcrypto.lib(conf_mod.obj)'
2>LINK : warning LNK4217: symbol 'strncmp' defined in 'libucrt.lib(strncmp.obj)' is imported by 'libssl.lib(ssl_rsa.obj)' in function 'SSL_CTX_use_serverinfo_file'
2>LINK : warning LNK4286: symbol 'strncmp' defined in 'libucrt.lib(strncmp.obj)' is imported by 'libssl.lib(ssl_ciph.obj)'
2>LINK : warning LNK4286: symbol 'strncmp' defined in 'libucrt.lib(strncmp.obj)' is imported by 'libssl.lib(ssl3_record.obj)'
2>LINK : warning LNK4286: symbol 'strncmp' defined in 'libucrt.lib(strncmp.obj)' is imported by 'libssl.lib(ssl_conf.obj)'
2>LINK : warning LNK4286: symbol '_errno' defined in 'libucrt.lib(errno.obj)' is imported by 'libcrypto.lib(conf_def.obj)'
2>LINK : warning LNK4217: symbol '_errno' defined in 'libucrt.lib(errno.obj)' is imported by 'libcrypto.lib(loader_file.obj)' in function 'try_decode_PKCS12'
2>LINK : warning LNK4217: symbol '_errno' defined in 'libucrt.lib(errno.obj)' is imported by 'libssl.lib(ssl_cert.obj)' in function 'SSL_add_dir_cert_subjects_to_stack'
2>LINK : warning LNK4286: symbol '_errno' defined in 'libucrt.lib(errno.obj)' is imported by 'libcrypto.lib(bss_file.obj)'
2>LINK : warning LNK4286: symbol '_errno' defined in 'libucrt.lib(errno.obj)' is imported by 'libcrypto.lib(o_dir.obj)'
2>LINK : warning LNK4286: symbol '_errno' defined in 'libucrt.lib(errno.obj)' is imported by 'libcrypto.lib(o_fopen.obj)'
2>LINK : warning LNK4286: symbol 'memmove' defined in 'libvcruntime.lib(memcpy.obj)' is imported by 'libcrypto.lib(curve25519.obj)'
2>LINK : warning LNK4286: symbol 'memmove' defined in 'libvcruntime.lib(memcpy.obj)' is imported by 'libcrypto.lib(bio_b64.obj)'
2>LINK : warning LNK4286: symbol 'memmove' defined in 'libvcruntime.lib(memcpy.obj)' is imported by 'libcrypto.lib(cfb64ede.obj)'
2>LINK : warning LNK4286: symbol 'memmove' defined in 'libvcruntime.lib(memcpy.obj)' is imported by 'libcrypto.lib(wrap128.obj)'
2>LINK : warning LNK4286: symbol 'memmove' defined in 'libvcruntime.lib(memcpy.obj)' is imported by 'libcrypto.lib(dh_key.obj)'
2>LINK : warning LNK4286: symbol 'memmove' defined in 'libvcruntime.lib(memcpy.obj)' is imported by 'libcrypto.lib(conf_def.obj)'
2>LINK : warning LNK4286: symbol 'memmove' defined in 'libvcruntime.lib(memcpy.obj)' is imported by 'libcrypto.lib(e_des3.obj)'
2>LINK : warning LNK4286: symbol 'memmove' defined in 'libvcruntime.lib(memcpy.obj)' is imported by 'libcrypto.lib(srp_vfy.obj)'
2>LINK : warning LNK4217: symbol 'memmove' defined in 'libvcruntime.lib(memcpy.obj)' is imported by 'libcrypto.lib(bss_mem.obj)' in function 'mem_ctrl'
2>LINK : warning LNK4286: symbol 'memmove' defined in 'libvcruntime.lib(memcpy.obj)' is imported by 'libcrypto.lib(cfb_enc.obj)'
2>LINK : warning LNK4217: symbol 'memmove' defined in 'libvcruntime.lib(memcpy.obj)' is imported by 'libssl.lib(rec_layer_s3.obj)' in function 'ssl3_read_n'
2>LINK : warning LNK4286: symbol 'memmove' defined in 'libvcruntime.lib(memcpy.obj)' is imported by 'libssl.lib(ssl3_record_tls13.obj)'
2>LINK : warning LNK4286: symbol 'memmove' defined in 'libvcruntime.lib(memcpy.obj)' is imported by 'libssl.lib(ssl3_record.obj)'
2>LINK : warning LNK4286: symbol 'memmove' defined in 'libvcruntime.lib(memcpy.obj)' is imported by 'libcrypto.lib(stack.obj)'
2>LINK : warning LNK4286: symbol 'strchr' defined in 'libvcruntime.lib(strchr.obj)' is imported by 'libcrypto.lib(store_register.obj)'
2>LINK : warning LNK4286: symbol 'strchr' defined in 'libvcruntime.lib(strchr.obj)' is imported by 'libcrypto.lib(ui_openssl.obj)'
2>LINK : warning LNK4286: symbol 'strchr' defined in 'libvcruntime.lib(strchr.obj)' is imported by 'libcrypto.lib(eng_cnf.obj)'
2>LINK : warning LNK4286: symbol 'strchr' defined in 'libvcruntime.lib(strchr.obj)' is imported by 'libcrypto.lib(store_lib.obj)'
2>LINK : warning LNK4286: symbol 'strchr' defined in 'libvcruntime.lib(strchr.obj)' is imported by 'libcrypto.lib(v3_info.obj)'
2>LINK : warning LNK4217: symbol 'strchr' defined in 'libvcruntime.lib(strchr.obj)' is imported by 'libcrypto.lib(v3_alt.obj)' in function 'GENERAL_NAME_print'
2>LINK : warning LNK4286: symbol 'strchr' defined in 'libvcruntime.lib(strchr.obj)' is imported by 'libcrypto.lib(v3_cpols.obj)'
2>LINK : warning LNK4286: symbol 'strchr' defined in 'libvcruntime.lib(strchr.obj)' is imported by 'libcrypto.lib(ui_lib.obj)'
2>LINK : warning LNK4286: symbol 'strchr' defined in 'libvcruntime.lib(strchr.obj)' is imported by 'libcrypto.lib(conf_ssl.obj)'
2>LINK : warning LNK4286: symbol 'strchr' defined in 'libvcruntime.lib(strchr.obj)' is imported by 'libcrypto.lib(b_addr.obj)'
2>LINK : warning LNK4286: symbol 'strchr' defined in 'libvcruntime.lib(strchr.obj)' is imported by 'libcrypto.lib(v3_utl.obj)'
2>LINK : warning LNK4286: symbol 'strchr' defined in 'libvcruntime.lib(strchr.obj)' is imported by 'libcrypto.lib(ocsp_lib.obj)'
2>LINK : warning LNK4217: symbol 'strchr' defined in 'libvcruntime.lib(strchr.obj)' is imported by 'libssl.lib(t1_lib.obj)' in function 'sig_cb'
2>LINK : warning LNK4286: symbol 'strchr' defined in 'libvcruntime.lib(strchr.obj)' is imported by 'libssl.lib(d1_srtp.obj)'
2>LINK : warning LNK4286: symbol 'strchr' defined in 'libvcruntime.lib(strchr.obj)' is imported by 'libcrypto.lib(bss_file.obj)'
2>LINK : warning LNK4286: symbol 'strchr' defined in 'libvcruntime.lib(strchr.obj)' is imported by 'libcrypto.lib(conf_mod.obj)'
2>LINK : warning LNK4217: symbol 'qsort' defined in 'libucrt.lib(qsort.obj)' is imported by 'libssl.lib(s3_lib.obj)' in function 'ssl_sort_cipher_list'
2>LINK : warning LNK4286: symbol 'qsort' defined in 'libucrt.lib(qsort.obj)' is imported by 'libcrypto.lib(stack.obj)'
2>LINK : warning LNK4286: symbol 'qsort' defined in 'libucrt.lib(qsort.obj)' is imported by 'libcrypto.lib(o_names.obj)'
2>LINK : warning LNK4286: symbol 'qsort' defined in 'libucrt.lib(qsort.obj)' is imported by 'libcrypto.lib(tasn_enc.obj)'
2>LINK : warning LNK4286: symbol 'atoi' defined in 'libucrt.lib(atox.obj)' is imported by 'libcrypto.lib(rsa_pmeth.obj)'
2>LINK : warning LNK4286: symbol 'atoi' defined in 'libucrt.lib(atox.obj)' is imported by 'libcrypto.lib(siphash_pmeth.obj)'
2>LINK : warning LNK4217: symbol 'atoi' defined in 'libucrt.lib(atox.obj)' is imported by 'libssl.lib(ssl_conf.obj)' in function 'cmd_RecordPadding'
2>LINK : warning LNK4286: symbol 'atoi' defined in 'libucrt.lib(atox.obj)' is imported by 'libcrypto.lib(dh_pmeth.obj)'
2>LINK : warning LNK4286: symbol 'atoi' defined in 'libucrt.lib(atox.obj)' is imported by 'libcrypto.lib(dsa_pmeth.obj)'
2>LINK : warning LNK4286: symbol 'atoi' defined in 'libucrt.lib(atox.obj)' is imported by 'libcrypto.lib(ec_pmeth.obj)'
2>LINK : warning LNK4286: symbol '_stricmp' defined in 'libucrt.lib(stricmp.obj)' is imported by 'libcrypto.lib(store_lib.obj)'
2>LINK : warning LNK4217: symbol '_stricmp' defined in 'libucrt.lib(stricmp.obj)' is imported by 'libssl.lib(ssl_conf.obj)' in function 'cmd_ECDHParameters'
2>LINK : warning LNK4286: symbol '_stricmp' defined in 'libucrt.lib(stricmp.obj)' is imported by 'libcrypto.lib(o_names.obj)'
2>LINK : warning LNK4286: symbol '_stricmp' defined in 'libucrt.lib(stricmp.obj)' is imported by 'libcrypto.lib(v3_tlsf.obj)'
2>LINK : warning LNK4286: symbol '_stricmp' defined in 'libucrt.lib(stricmp.obj)' is imported by 'libcrypto.lib(conf_def.obj)'
2>LINK : warning LNK4286: symbol '_strnicmp' defined in 'libucrt.lib(strnicmp.obj)' is imported by 'libcrypto.lib(loader_file.obj)'
2>LINK : warning LNK4217: symbol '_strnicmp' defined in 'libucrt.lib(strnicmp.obj)' is imported by 'libssl.lib(ssl_conf.obj)' in function 'ssl_conf_cmd_skip_prefix'
2>LINK : warning LNK4286: symbol '_strnicmp' defined in 'libucrt.lib(strnicmp.obj)' is imported by 'libcrypto.lib(ameth_lib.obj)'
2>LINK : warning LNK4286: symbol '_strnicmp' defined in 'libucrt.lib(strnicmp.obj)' is imported by 'libcrypto.lib(v3_utl.obj)'
2>LINK : warning LNK4286: symbol '_strnicmp' defined in 'libucrt.lib(strnicmp.obj)' is imported by 'libcrypto.lib(tb_asnmth.obj)'
2>LINK : warning LNK4286: symbol 'memchr' defined in 'libvcruntime.lib(memchr.obj)' is imported by 'libcrypto.lib(v3_ncons.obj)'
2>LINK : warning LNK4286: symbol 'memchr' defined in 'libvcruntime.lib(memchr.obj)' is imported by 'libcrypto.lib(ocsp_ht.obj)'
2>LINK : warning LNK4217: symbol 'memchr' defined in 'libvcruntime.lib(memchr.obj)' is imported by 'libssl.lib(extensions_srvr.obj)' in function 'PACKET_contains_zero_byte'
2>LINK : warning LNK4286: symbol 'memchr' defined in 'libvcruntime.lib(memchr.obj)' is imported by 'libcrypto.lib(x509_vpm.obj)'
2>LINK : warning LNK4286: symbol 'memchr' defined in 'libvcruntime.lib(memchr.obj)' is imported by 'libcrypto.lib(pem_lib.obj)'
2>LINK : warning LNK4286: symbol 'memchr' defined in 'libvcruntime.lib(memchr.obj)' is imported by 'libcrypto.lib(v3_utl.obj)'
2>LINK : warning LNK4217: symbol 'free' defined in 'libucrt.lib(free.obj)' is imported by 'libcrypto.lib(mem.obj)' in function 'CRYPTO_free'
2>LINK : warning LNK4286: symbol 'free' defined in 'libucrt.lib(free.obj)' is imported by 'libcrypto.lib(o_dir.obj)'
2>LINK : warning LNK4286: symbol 'free' defined in 'libucrt.lib(free.obj)' is imported by 'libcrypto.lib(conf_lib.obj)'
2>LINK : warning LNK4217: symbol 'malloc' defined in 'libucrt.lib(malloc.obj)' is imported by 'libcrypto.lib(mem.obj)' in function 'CRYPTO_malloc'
2>LINK : warning LNK4286: symbol 'malloc' defined in 'libucrt.lib(malloc.obj)' is imported by 'libcrypto.lib(o_dir.obj)'
2>LINK : warning LNK4286: symbol 'malloc' defined in 'libucrt.lib(malloc.obj)' is imported by 'libcrypto.lib(conf_lib.obj)'
2>LINK : warning LNK4217: symbol 'realloc' defined in 'libucrt.lib(realloc.obj)' is imported by 'libcrypto.lib(mem.obj)' in function 'CRYPTO_realloc'
2>LINK : warning LNK4217: symbol 'strerror_s' defined in 'libucrt.lib(strerror.obj)' is imported by 'libcrypto.lib(o_str.obj)' in function 'openssl_strerror_r'
2>LINK : warning LNK4217: symbol '_stat64i32' defined in 'libucrt.lib(stat.obj)' is imported by 'libcrypto.lib(by_dir.obj)' in function 'get_cert_by_subject'
2>LINK : warning LNK4286: symbol '_stat64i32' defined in 'libucrt.lib(stat.obj)' is imported by 'libcrypto.lib(conf_def.obj)'
2>LINK : warning LNK4286: symbol '_stat64i32' defined in 'libucrt.lib(stat.obj)' is imported by 'libcrypto.lib(loader_file.obj)'
2>LINK : warning LNK4217: symbol 'fclose' defined in 'libucrt.lib(fclose.obj)' is imported by 'libcrypto.lib(bss_file.obj)' in function 'file_free'
2>LINK : warning LNK4286: symbol 'fclose' defined in 'libucrt.lib(fclose.obj)' is imported by 'libcrypto.lib(ui_openssl.obj)'
2>LINK : warning LNK4217: symbol 'fflush' defined in 'libucrt.lib(fflush.obj)' is imported by 'libcrypto.lib(bss_file.obj)' in function 'file_ctrl'
2>LINK : warning LNK4286: symbol 'fflush' defined in 'libucrt.lib(fflush.obj)' is imported by 'libcrypto.lib(ui_openssl.obj)'
2>LINK : warning LNK4217: symbol '_fileno' defined in 'libucrt.lib(fileno.obj)' is imported by 'libcrypto.lib(bss_file.obj)' in function 'file_ctrl'
2>LINK : warning LNK4217: symbol 'fread' defined in 'libucrt.lib(fread.obj)' is imported by 'libcrypto.lib(bss_file.obj)' in function 'file_read'
2>LINK : warning LNK4217: symbol 'fseek' defined in 'libucrt.lib(fseek.obj)' is imported by 'libcrypto.lib(bss_file.obj)' in function 'file_ctrl'
2>LINK : warning LNK4217: symbol 'ftell' defined in 'libucrt.lib(ftell.obj)' is imported by 'libcrypto.lib(bss_file.obj)' in function 'file_ctrl'
2>LINK : warning LNK4217: symbol 'fwrite' defined in 'libucrt.lib(fwrite.obj)' is imported by 'libcrypto.lib(bss_file.obj)' in function 'file_write'
2>LINK : warning LNK4217: symbol 'fwrite' defined in 'libucrt.lib(fwrite.obj)' is imported by 'libcrypto.lib(a_strex.obj)' in function 'do_buf'
2>LINK : warning LNK4286: symbol 'fwrite' defined in 'libucrt.lib(fwrite.obj)' is imported by 'libcrypto.lib(b_dump.obj)'
2>LINK : warning LNK4217: symbol '_setmode' defined in 'libucrt.lib(setmode.obj)' is imported by 'libcrypto.lib(bss_file.obj)' in function 'file_ctrl'
2>LINK : warning LNK4217: symbol 'strcspn' defined in 'libucrt.lib(strcspn.obj)' is imported by 'libcrypto.lib(pem_lib.obj)' in function 'PEM_get_EVP_CIPHER_INFO'
2>LINK : warning LNK4217: symbol 'strrchr' defined in 'libvcruntime.lib(strrchr.obj)' is imported by 'libcrypto.lib(conf_mod.obj)' in function 'module_find'
2>LINK : warning LNK4286: symbol 'strrchr' defined in 'libvcruntime.lib(strrchr.obj)' is imported by 'libcrypto.lib(b_addr.obj)'
2>LINK : warning LNK4286: symbol 'strrchr' defined in 'libvcruntime.lib(strrchr.obj)' is imported by 'libcrypto.lib(asn_moid.obj)'
2>LINK : warning LNK4217: symbol 'isspace' defined in 'libucrt.lib(_ctype.obj)' is imported by 'libcrypto.lib(conf_mod.obj)' in function 'CONF_parse_list'
2>LINK : warning LNK4217: symbol '_exit' defined in 'libucrt.lib(exit.obj)' is imported by 'libcrypto.lib(cryptlib.obj)' in function 'OPENSSL_die'
2>LINK : warning LNK4217: symbol '__stdio_common_vswprintf' defined in 'libucrt.lib(output.obj)' is imported by 'libcrypto.lib(cryptlib.obj)' in function 'OPENSSL_showfatal'
2>LINK : warning LNK4217: symbol 'raise' defined in 'libucrt.lib(signal.obj)' is imported by 'libcrypto.lib(cryptlib.obj)' in function 'OPENSSL_die'
2>LINK : warning LNK4217: symbol 'getenv' defined in 'libucrt.lib(getenv.obj)' is imported by 'libcrypto.lib(getenv.obj)' in function 'ossl_safe_getenv'
2>LINK : warning LNK4217: symbol '__stdio_common_vsscanf' defined in 'libucrt.lib(input.obj)' is imported by 'libcrypto.lib(v3_utl.obj)' in function '_vsscanf_l'
2>LINK : warning LNK4217: symbol 'strncpy' defined in 'libucrt.lib(strncpy.obj)' is imported by 'libcrypto.lib(x509_obj.obj)' in function 'X509_NAME_oneline'
2>LINK : warning LNK4286: symbol 'strncpy' defined in 'libucrt.lib(strncpy.obj)' is imported by 'libcrypto.lib(evp_key.obj)'
2>LINK : warning LNK4286: symbol 'strncpy' defined in 'libucrt.lib(strncpy.obj)' is imported by 'libcrypto.lib(dso_win32.obj)'
2>LINK : warning LNK4286: symbol 'strtoul' defined in 'libucrt.lib(strtox.obj)' is imported by 'libcrypto.lib(asn_mstbl.obj)'
2>LINK : warning LNK4217: symbol 'strtoul' defined in 'libucrt.lib(strtox.obj)' is imported by 'libcrypto.lib(v3_addr.obj)' in function 'v2i_IPAddrBlocks'
2>LINK : warning LNK4286: symbol 'strtoul' defined in 'libucrt.lib(strtox.obj)' is imported by 'libcrypto.lib(ocsp_ht.obj)'
2>LINK : warning LNK4286: symbol 'strtoul' defined in 'libucrt.lib(strtox.obj)' is imported by 'libcrypto.lib(asn1_gen.obj)'
2>LINK : warning LNK4286: symbol 'strtoul' defined in 'libucrt.lib(strtox.obj)' is imported by 'libcrypto.lib(a_strnid.obj)'
2>LINK : warning LNK4217: symbol '_strdup' defined in 'libucrt.lib(strdup.obj)' is imported by 'libcrypto.lib(conf_lib.obj)' in function 'OPENSSL_INIT_set_config_appname'
2>LINK : warning LNK4286: symbol '_strdup' defined in 'libucrt.lib(strdup.obj)' is imported by 'libcrypto.lib(conf_sap.obj)'
2>LINK : warning LNK4217: symbol '_wfopen' defined in 'libucrt.lib(fopen.obj)' is imported by 'libcrypto.lib(o_fopen.obj)' in function 'openssl_fopen'
2>LINK : warning LNK4217: symbol 'fopen' defined in 'libucrt.lib(fopen.obj)' is imported by 'libcrypto.lib(o_fopen.obj)' in function 'openssl_fopen'
2>LINK : warning LNK4286: symbol 'fopen' defined in 'libucrt.lib(fopen.obj)' is imported by 'libcrypto.lib(ui_openssl.obj)'
2>LINK : warning LNK4217: symbol '__acrt_iob_func' defined in 'libucrt.lib(_file.obj)' is imported by 'libcrypto.lib(eng_openssl.obj)' in function 'openssl_load_privkey'
2>LINK : warning LNK4286: symbol '__acrt_iob_func' defined in 'libucrt.lib(_file.obj)' is imported by 'libcrypto.lib(e_capi.obj)'
2>LINK : warning LNK4217: symbol '__acrt_iob_func' defined in 'libucrt.lib(_file.obj)' is imported by 'libcrypto.lib(ui_openssl.obj)' in function 'read_string_inner'
2>LINK : warning LNK4217: symbol '__stdio_common_vfprintf' defined in 'libucrt.lib(output.obj)' is imported by 'libcrypto.lib(eng_openssl.obj)' in function '_vfprintf_l'
2>LINK : warning LNK4217: symbol '__stdio_common_vfprintf' defined in 'libucrt.lib(output.obj)' is imported by 'libcrypto.lib(ui_openssl.obj)' in function 'pushsig'
2>LINK : warning LNK4217: symbol '_gmtime64_s' defined in 'libucrt.lib(gmtime.obj)' is imported by 'libcrypto.lib(o_time.obj)' in function 'OPENSSL_gmtime'
2>LINK : warning LNK4217: symbol 'strtol' defined in 'libucrt.lib(strtox.obj)' is imported by 'libcrypto.lib(v3_tlsf.obj)' in function 'v2i_TLS_FEATURE'
2>LINK : warning LNK4286: symbol 'strtol' defined in 'libucrt.lib(strtox.obj)' is imported by 'libcrypto.lib(eng_ctrl.obj)'
2>LINK : warning LNK4217: symbol 'strstr' defined in 'libvcruntime.lib(strstr.obj)' is imported by 'libcrypto.lib(loader_file.obj)' in function 'file_open'
2>LINK : warning LNK4286: symbol 'strstr' defined in 'libvcruntime.lib(strstr.obj)' is imported by 'libcrypto.lib(dso_win32.obj)'
2>LINK : warning LNK4217: symbol 'fputs' defined in 'libucrt.lib(fputs.obj)' is imported by 'libcrypto.lib(ui_openssl.obj)' in function 'read_string'
2>LINK : warning LNK4217: symbol 'signal' defined in 'libucrt.lib(signal.obj)' is imported by 'libcrypto.lib(ui_openssl.obj)' in function 'popsig'
2>libcrypto.lib(bss_file.obj) : error LNK2019: unresolved external symbol __imp_feof referenced in function file_ctrl
2>libcrypto.lib(ui_openssl.obj) : error LNK2001: unresolved external symbol __imp_feof
2>libcrypto.lib(bss_file.obj) : error LNK2019: unresolved external symbol __imp_ferror referenced in function file_read
2>libcrypto.lib(ui_openssl.obj) : error LNK2001: unresolved external symbol __imp_ferror
2>libcrypto.lib(bss_file.obj) : error LNK2019: unresolved external symbol __imp_fgets referenced in function file_gets
2>libcrypto.lib(ui_openssl.obj) : error LNK2001: unresolved external symbol __imp_fgets
2>libcrypto.lib(pem_lib.obj) : error LNK2019: unresolved external symbol __imp_strspn referenced in function PEM_get_EVP_CIPHER_INFO
2>libcrypto.lib(v3_asid.obj) : error LNK2001: unresolved external symbol __imp_strspn
2>libcrypto.lib(v3_addr.obj) : error LNK2001: unresolved external symbol __imp_strspn
2>libcrypto.lib(cryptlib.obj) : error LNK2019: unresolved external symbol __imp_wcsstr referenced in function OPENSSL_isservice
2>E:\Github\C++\HTTP\libhv\Builds\Shared_MT\bin\Release\hv.dll : fatal error LNK1120: 5 unresolved externals
ffreality commented 10 months ago

okay, solved.