alkee-allm / k2proto

grpc service sample
6 stars 2 forks source link

GRPC client 적용 Unreal project 추가 #26

Open alkee-allm opened 4 years ago

alkee-allm commented 4 years ago

C++ K2Client sample 참고해, unreal project(UE4)에서 gRPC client 적용이 필요.

ReU4752 commented 4 years ago

Reference

- https://medium.com/@rasielll/grpc-with-ue4-dddd832f049f

alkee-allm commented 4 years ago

Reference

이 reference 는 좋지 않을 것 같습니다.

  1. build grpc with -DgRPC_USE_PROTO_LITE=ON flag.

    • GRPC_USE_PROTO_LITE 를 사용하는 이유가 불명확하고
  2. Now you should put this abomination into beginning of every .pb.cc and .grpc.pb.cc file you’re going to build inside your project.

    • 이때문에 generated file 을 수정해야하는 불합리함(protocol 이 변경 될때마다 신경써주어야만함)이 있습니다.
ReU4752 commented 4 years ago

언리얼 프로젝트에 protobuf, grpc 라이브러리 추가를 위한 모듈 파일 수정

Reference

https://github.com/alkee-allm/k2proto/commit/0cc1e50e6f12f5d32b202ba92f12f815a8a345c2 PublicAdditionalLibraries, PublicIncludePaths 에 path 추가하여, *.lib 경로와 include 경로를 등록

ReU4752 commented 4 years ago

현재 에디터 실행 시 libprotobuf-lite.dll, libprotobuf.dll 을 찾을 수 없다는 이유로 K2UE4 모듈 로드 실패 발생

protobuf, grpc 는 dll 도 같이 로드되어야함

ReU4752 commented 4 years ago

protobuf/bin 에 있는 *.dll 들을 K2UE4/Binaries/Win64 에 복사하여 문제 해결

alkee-allm commented 4 years ago

Unreal 에서 구현된 gRPC reference 가 상당히 부족함. 크게 두가지 정도로 reference 가 모여지는데

ReU4752 commented 4 years ago

현재 Game Module에 gRPC 설정 작업이 묶여있는데, 따로 gRPC Third-Party Plugin을 만들어서 분리하여 다른 프로젝트로 통합시키거나 관리 할 때 유용할 것 같습니다.

ReU4752 commented 4 years ago

현재 Packaging 하여 게임 실행 시 protobuf 관련 dll 을 로드 할 수 없다고 오류 발생

예시로 추가한 기본 Third Party Plugin example 는 dll 이 잘 로드 됨....

ReU4752 commented 4 years ago

https://github.com/alkee-allm/k2proto/commit/6719cff83db0e41092aeaf5f6a553b29f0f08f37

PublicDelayLoadDLLs 는 경로를 지정할 필요없음. Ref

ReU4752 commented 4 years ago

dll 의 위치가 실행파일 경로에는 무조건 있어야함.

RuntimeDependencies 에서 $(TargetOutputDir)를 이용하면, 빌드 시 dll 의 위치가 .exe 위치에 있게됨.

패키징 시는 잘 작동하지만, VS에서 빌드할 때는 저렇게 설정해도 dll 이 ,exe 위치로 이동을 안해주는듯 이때만 따로 copy 해주는 방식으로 해결하자

alkee-allm commented 4 years ago

dll 의 위치가 실행파일 경로에는 무조건 있어야함.

참고 : Dynamic-Link Library Search Order

ReU4752 commented 4 years ago

224dc2cd0d9096765c30cc21556f6fc2bdda2628

일단은 따로 copy 해주는 방식으로 진행.

ReU4752 commented 4 years ago

sample.proto generate 해서 나온 소스 추가해서 GameInstance 에서 로그인을 해보자

ReU4752 commented 4 years ago

generate 해서 나온 소스 추가 작업을 K2Unity 의 generate.bat 처럼, batch 파일을 이용해 실행 제공.

UE4의 Hot reload 기능이 아직 부실하여, Source/proto 폴더 내 파일이 변경된다면 다시 빌드해함

ReU4752 commented 4 years ago

9e790759bce6a1ebeb8c3300eb34650ff40cf358

UE4에서 generate 해서 추가서 .pb.cc 파일들 위해 파일들을 컴파일 하기 위해, .pb.cc 들의 소스코드 수정

#pragma warning (push)

// forcing value to bool true or false
#pragma warning (disable : 4800)
// decimal digit terminates octal escape sequence
#pragma warning (disable : 4125)
// behavior change __is_pod has different value in previous version
#pragma warning (disable : 4647)
// 'symbol' is not defined as a preprocessor macro,
// replacing with '0' for 'directives'
#pragma warning (disable : 4668)
// constructor is not implicitly called
#pragma warning (disable : 4582)
// destructor is not implicitly called
#pragma warning (disable : 4583)
// reinterpret_cast
#pragma warning (disable : 4946)

// Reader beware: this should only be done if the
// compile platform AND the build target are Windows.
static void MemoryBarrier() {}
#include "Windows/AllowWindowsPlatformTypes.h"
#pragma intrinsic(_InterlockedCompareExchange64)
#define InterlockedCompareExchangeAcquire64 _InterlockedCompareExchange64
#define InterlockedCompareExchangeRelease64 _InterlockedCompareExchange64
#define InterlockedCompareExchangeNoFence64 _InterlockedCompareExchange64
#define InterlockedCompareExchange64 _InterlockedCompareExchange64
...
#pragma warning( pop )
// Reader beware: this should only be done if the
// compile platform AND the build target are Windows.
#include "Windows/HideWindowsPlatformTypes.h"

OpenSSl, zlib 라이브러리도 종속성에 추가

AddEngineThirdPartyPrivateStaticDependencies(Target, "OpenSSL");
AddEngineThirdPartyPrivateStaticDependencies(Target, "zlib");

Reference

alkee-allm commented 4 years ago

9e79075

UE4에서 generate 해서 추가서 .pb.cc 파일들 위해 파일들을 컴파일 하기 위해, .pb.cc 들의 소스코드 수정

수정되는 코드 부분을 template 로 만들고, .cc 파일을 만드는 batch file 에 template 들을 이어붙이는 processing 을 추가하면 좋을 것 같습니다.(자동화) hint : https://stackoverflow.com/questions/19750653/how-to-append-text-files-using-batch-files

alkee-allm commented 4 years ago

K2UE4/Source/K2UE4/Proto/sample.grpc.pb.cc 파일 등, generated code 는 빌드 이벤트 등에서 생성하도록 하여, 이 파일이 별도로 버전관리될 필요가 없도록 구성(.gitignore 에 추가) 해주셔야할 것 같습니다.

alkee-allm commented 4 years ago

commit log 에 resolve 없이 issue 번호만(#IssueNumber) 달아주시면 해당 시점에 함께 로깅(참조)됩니다. 다만 이 경우에 rebase 등을 위해 force push 하는 경우 commit revision 들이 변경될 수 있어, 참조가 깨질 수 있습니다.(따라서 rebase 가 필요하다면, 가능한한 push 전에 해주어야합니다.)

resolve 는 pull request 에 포함해주시면, 해당 pull request 가 merge 될 때 이 issue 가 자동으로 close 되도록 하는 기능을 합니다.

ReU4752 commented 4 years ago

8191577988aa79423622eae532fbd80276baee4c template code 들이 적용 안되던 문제 해결

Process.Start 는 현재 프로세스와 독립적으로 실행되므로 프로세스가 종료될 때까지 기다리지 않음. WaitForExit 를 호출하여 protoc 프로세스가 종료될 때까지 block

Process ProtocProcess = Process.Start(...);
ProtocProcess.WaitForExit();
ReU4752 commented 4 years ago

프로세스 종료 시 exit code 를 확인하여, 실패 시 Merge template code 단계를 skip 하면 좋을 것 같다

ReU4752 commented 4 years ago

abseil, upb, SSL, ... 라이브러리 링크 에러 발생

grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol OPENSSL_sk_num referenced in function "enum tsi_result __cdecl ssl_handshaker_result_extract_peer(struct tsi_handshaker_result const *,struct tsi_peer *)" (?ssl_handshaker_result_extract_peer@@YA?AW4tsi_result@@PEBUtsi_handshaker_result@@PEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol OPENSSL_sk_num referenced in function "enum tsi_result __cdecl ssl_handshaker_result_extract_peer(struct tsi_handshaker_result const *,struct tsi_peer *)" (?ssl_handshaker_result_extract_peer@@YA?AW4tsi_result@@PEBUtsi_handshaker_result@@PEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol OPENSSL_sk_value referenced in function "enum tsi_result __cdecl ssl_handshaker_result_extract_peer(struct tsi_handshaker_result const *,struct tsi_peer *)" (?ssl_handshaker_result_extract_peer@@YA?AW4tsi_result@@PEBUtsi_handshaker_result@@PEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol OPENSSL_sk_new_null referenced in function "enum tsi_result __cdecl x509_store_load_certs(struct x509_store_st *,char const *,unsigned __int64,struct stack_st_X509_NAME * *)" (?x509_store_load_certs@@YA?AW4tsi_result@@PEAUx509_store_st@@PEBD_KPEAPEAUstack_st_X509_NAME@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol OPENSSL_sk_pop_free referenced in function "enum tsi_result __cdecl peer_from_x509(struct x509_st *,int,struct tsi_peer *)" (?peer_from_x509@@YA?AW4tsi_result@@PEAUx509_st@@HPEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol OPENSSL_sk_push referenced in function "enum tsi_result __cdecl x509_store_load_certs(struct x509_store_st *,char const *,unsigned __int64,struct stack_st_X509_NAME * *)" (?x509_store_load_certs@@YA?AW4tsi_result@@PEAUx509_store_st@@PEBD_KPEAPEAUstack_st_X509_NAME@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol CRYPTO_get_ex_new_index referenced in function "void __cdecl init_openssl(void)" (?init_openssl@@YAXXZ)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol CRYPTO_free referenced in function "enum tsi_result __cdecl add_subject_alt_names_properties_to_peer(struct tsi_peer *,struct stack_st_GENERAL_NAME *,unsigned __int64)" (?add_subject_alt_names_properties_to_peer@@YA?AW4tsi_result@@PEAUtsi_peer@@PEAUstack_st_GENERAL_NAME@@_K@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol OPENSSL_init_crypto referenced in function "void __cdecl init_openssl(void)" (?init_openssl@@YAXXZ)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol BIO_test_flags referenced in function "enum tsi_result __cdecl ssl_handshaker_next(struct tsi_handshaker *,unsigned char const *,unsigned __int64,unsigned char const * *,unsigned __int64 *,struct tsi_handshaker_result * *,void (__cdecl*)(enum tsi_result,void *,unsigned char const *,unsigned __int64,struct tsi_handshaker_result *),void *)" (?ssl_handshaker_next@@YA?AW4tsi_result@@PEAUtsi_handshaker@@PEBE_KPEAPEBEPEA_KPEAPEAUtsi_handshaker_result@@P6AXW41@PEAX12PEAU3@@Z7@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol BIO_new referenced in function "enum tsi_result __cdecl ssl_handshaker_result_extract_peer(struct tsi_handshaker_result const *,struct tsi_peer *)" (?ssl_handshaker_result_extract_peer@@YA?AW4tsi_result@@PEBUtsi_handshaker_result@@PEAUtsi_peer@@@Z)
grpc.lib(json_token.cc.obj) : error LNK2001: unresolved external symbol BIO_new
grpc.lib(aes_gcm.cc.obj) : error LNK2001: unresolved external symbol BIO_new
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol BIO_free referenced in function "void __cdecl ssl_protector_destroy(struct tsi_frame_protector *)" (?ssl_protector_destroy@@YAXPEAUtsi_frame_protector@@@Z)
grpc.lib(json_token.cc.obj) : error LNK2001: unresolved external symbol BIO_free
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol BIO_read referenced in function "enum tsi_result __cdecl ssl_protector_protect(struct tsi_frame_protector *,unsigned char const *,unsigned __int64 *,unsigned char *,unsigned __int64 *)" (?ssl_protector_protect@@YA?AW4tsi_result@@PEAUtsi_frame_protector@@PEBEPEA_KPEAE2@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol BIO_write referenced in function "enum tsi_result __cdecl ssl_protector_unprotect(struct tsi_frame_protector *,unsigned char const *,unsigned __int64 *,unsigned char *,unsigned __int64 *)" (?ssl_protector_unprotect@@YA?AW4tsi_result@@PEAUtsi_frame_protector@@PEBEPEA_KPEAE2@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol BIO_ctrl referenced in function "enum tsi_result __cdecl ssl_protector_protect(struct tsi_frame_protector *,unsigned char const *,unsigned __int64 *,unsigned char *,unsigned __int64 *)" (?ssl_protector_protect@@YA?AW4tsi_result@@PEAUtsi_frame_protector@@PEBEPEA_KPEAE2@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2001: unresolved external symbol BIO_ctrl
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol BIO_s_mem referenced in function "enum tsi_result __cdecl ssl_handshaker_result_extract_peer(struct tsi_handshaker_result const *,struct tsi_peer *)" (?ssl_handshaker_result_extract_peer@@YA?AW4tsi_result@@PEBUtsi_handshaker_result@@PEAUtsi_peer@@@Z)
grpc.lib(json_token.cc.obj) : error LNK2001: unresolved external symbol BIO_s_mem
grpc.lib(aes_gcm.cc.obj) : error LNK2001: unresolved external symbol BIO_s_mem
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol BIO_new_mem_buf referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol BIO_new_bio_pair referenced in function "enum tsi_result __cdecl create_tsi_ssl_handshaker(struct ssl_ctx_st *,int,char const *,struct tsi_ssl_handshaker_factory *,struct tsi_handshaker * *)" (?create_tsi_ssl_handshaker@@YA?AW4tsi_result@@PEAUssl_ctx_st@@HPEBDPEAUtsi_ssl_handshaker_factory@@PEAPEAUtsi_handshaker@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol ASN1_STRING_to_UTF8 referenced in function "enum tsi_result __cdecl add_subject_alt_names_properties_to_peer(struct tsi_peer *,struct stack_st_GENERAL_NAME *,unsigned __int64)" (?add_subject_alt_names_properties_to_peer@@YA?AW4tsi_result@@PEAUtsi_peer@@PEAUstack_st_GENERAL_NAME@@_K@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol EVP_PKEY_free referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(json_token.cc.obj) : error LNK2001: unresolved external symbol EVP_PKEY_free
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol EC_KEY_new_by_curve_name referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol EC_KEY_free referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_STORE_new referenced in function "struct tsi_ssl_root_certs_store * __cdecl tsi_ssl_root_certs_store_create(char const *)" (?tsi_ssl_root_certs_store_create@@YAPEAUtsi_ssl_root_certs_store@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_STORE_free referenced in function "struct tsi_ssl_root_certs_store * __cdecl tsi_ssl_root_certs_store_create(char const *)" (?tsi_ssl_root_certs_store_create@@YAPEAUtsi_ssl_root_certs_store@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_STORE_up_ref referenced in function "enum tsi_result __cdecl tsi_create_ssl_client_handshaker_factory_with_options(struct tsi_ssl_client_handshaker_options const *,struct tsi_ssl_client_handshaker_factory * *)" (?tsi_create_ssl_client_handshaker_factory_with_options@@YA?AW4tsi_result@@PEBUtsi_ssl_client_handshaker_options@@PEAPEAUtsi_ssl_client_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_STORE_set_flags referenced in function "enum tsi_result __cdecl ssl_ctx_load_verification_certs(struct ssl_ctx_st *,char const *,unsigned __int64,struct stack_st_X509_NAME * *)" (?ssl_ctx_load_verification_certs@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBD_KPEAPEAUstack_st_X509_NAME@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_STORE_add_cert referenced in function "enum tsi_result __cdecl x509_store_load_certs(struct x509_store_st *,char const *,unsigned __int64,struct stack_st_X509_NAME * *)" (?x509_store_load_certs@@YA?AW4tsi_result@@PEAUx509_store_st@@PEBD_KPEAPEAUstack_st_X509_NAME@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_NAME_dup referenced in function "enum tsi_result __cdecl x509_store_load_certs(struct x509_store_st *,char const *,unsigned __int64,struct stack_st_X509_NAME * *)" (?x509_store_load_certs@@YA?AW4tsi_result@@PEAUx509_store_st@@PEBD_KPEAPEAUstack_st_X509_NAME@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_NAME_free referenced in function "enum tsi_result __cdecl x509_store_load_certs(struct x509_store_st *,char const *,unsigned __int64,struct stack_st_X509_NAME * *)" (?x509_store_load_certs@@YA?AW4tsi_result@@PEAUx509_store_st@@PEBD_KPEAPEAUstack_st_X509_NAME@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_free referenced in function "enum tsi_result __cdecl ssl_handshaker_result_extract_peer(struct tsi_handshaker_result const *,struct tsi_peer *)" (?ssl_handshaker_result_extract_peer@@YA?AW4tsi_result@@PEBUtsi_handshaker_result@@PEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_get_subject_name referenced in function "enum tsi_result __cdecl peer_from_x509(struct x509_st *,int,struct tsi_peer *)" (?peer_from_x509@@YA?AW4tsi_result@@PEAUx509_st@@HPEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_NAME_get_index_by_NID referenced in function "enum tsi_result __cdecl peer_from_x509(struct x509_st *,int,struct tsi_peer *)" (?peer_from_x509@@YA?AW4tsi_result@@PEAUx509_st@@HPEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_NAME_get_entry referenced in function "enum tsi_result __cdecl peer_from_x509(struct x509_st *,int,struct tsi_peer *)" (?peer_from_x509@@YA?AW4tsi_result@@PEAUx509_st@@HPEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_NAME_ENTRY_get_data referenced in function "enum tsi_result __cdecl peer_from_x509(struct x509_st *,int,struct tsi_peer *)" (?peer_from_x509@@YA?AW4tsi_result@@PEAUx509_st@@HPEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_get_ext_d2i referenced in function "enum tsi_result __cdecl peer_from_x509(struct x509_st *,int,struct tsi_peer *)" (?peer_from_x509@@YA?AW4tsi_result@@PEAUx509_st@@HPEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol PEM_read_bio_X509 referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol PEM_write_bio_X509 referenced in function "enum tsi_result __cdecl ssl_handshaker_result_extract_peer(struct tsi_handshaker_result const *,struct tsi_peer *)" (?ssl_handshaker_result_extract_peer@@YA?AW4tsi_result@@PEBUtsi_handshaker_result@@PEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol PEM_read_bio_X509_AUX referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol PEM_read_bio_PrivateKey referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol ERR_get_error referenced in function "enum tsi_result __cdecl ssl_handshaker_next(struct tsi_handshaker *,unsigned char const *,unsigned __int64,unsigned char const * *,unsigned __int64 *,struct tsi_handshaker_result * *,void (__cdecl*)(enum tsi_result,void *,unsigned char const *,unsigned __int64,struct tsi_handshaker_result *),void *)" (?ssl_handshaker_next@@YA?AW4tsi_result@@PEAUtsi_handshaker@@PEBE_KPEAPEBEPEA_KPEAPEAUtsi_handshaker_result@@P6AXW41@PEAX12PEAU3@@Z7@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2001: unresolved external symbol ERR_get_error
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol ERR_clear_error referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol ERR_error_string_n referenced in function "enum tsi_result __cdecl ssl_handshaker_next(struct tsi_handshaker *,unsigned char const *,unsigned __int64,unsigned char const * *,unsigned __int64 *,struct tsi_handshaker_result * *,void (__cdecl*)(enum tsi_result,void *,unsigned char const *,unsigned __int64,struct tsi_handshaker_result *),void *)" (?ssl_handshaker_next@@YA?AW4tsi_result@@PEAUtsi_handshaker@@PEBE_KPEAPEBEPEA_KPEAPEAUtsi_handshaker_result@@P6AXW41@PEAX12PEAU3@@Z7@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol ENGINE_by_id referenced in function "enum tsi_result __cdecl ssl_ctx_use_engine_private_key(struct ssl_ctx_st *,char const *,unsigned __int64)" (?ssl_ctx_use_engine_private_key@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBD_K@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol ENGINE_ctrl_cmd_string referenced in function "enum tsi_result __cdecl ssl_ctx_use_engine_private_key(struct ssl_ctx_st *,char const *,unsigned __int64)" (?ssl_ctx_use_engine_private_key@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBD_K@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol ENGINE_free referenced in function "enum tsi_result __cdecl ssl_ctx_use_engine_private_key(struct ssl_ctx_st *,char const *,unsigned __int64)" (?ssl_ctx_use_engine_private_key@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBD_K@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol ENGINE_init referenced in function "enum tsi_result __cdecl ssl_ctx_use_engine_private_key(struct ssl_ctx_st *,char const *,unsigned __int64)" (?ssl_ctx_use_engine_private_key@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBD_K@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol ENGINE_load_private_key referenced in function "enum tsi_result __cdecl ssl_ctx_use_engine_private_key(struct ssl_ctx_st *,char const *,unsigned __int64)" (?ssl_ctx_use_engine_private_key@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBD_K@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol ENGINE_set_default referenced in function "enum tsi_result __cdecl ssl_ctx_use_engine_private_key(struct ssl_ctx_st *,char const *,unsigned __int64)" (?ssl_ctx_use_engine_private_key@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBD_K@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_set_options referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_sess_set_new_cb referenced in function "enum tsi_result __cdecl tsi_create_ssl_client_handshaker_factory_with_options(struct tsi_ssl_client_handshaker_options const *,struct tsi_ssl_client_handshaker_factory * *)" (?tsi_create_ssl_client_handshaker_factory_with_options@@YA?AW4tsi_result@@PEBUtsi_ssl_client_handshaker_options@@PEAPEAUtsi_ssl_client_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_set_next_protos_advertised_cb referenced in function "enum tsi_result __cdecl tsi_create_ssl_server_handshaker_factory_ex(struct tsi_ssl_pem_key_cert_pair const *,unsigned __int64,char const *,enum tsi_client_certificate_request_type,char const *,char const * *,unsigned short,struct tsi_ssl_server_handshaker_factory * *)" (?tsi_create_ssl_server_handshaker_factory_ex@@YA?AW4tsi_result@@PEBUtsi_ssl_pem_key_cert_pair@@_KPEBDW4tsi_client_certificate_request_type@@2PEAPEBDGPEAPEAUtsi_ssl_server_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_set_next_proto_select_cb referenced in function "enum tsi_result __cdecl tsi_create_ssl_client_handshaker_factory_with_options(struct tsi_ssl_client_handshaker_options const *,struct tsi_ssl_client_handshaker_factory * *)" (?tsi_create_ssl_client_handshaker_factory_with_options@@YA?AW4tsi_result@@PEBUtsi_ssl_client_handshaker_options@@PEAPEAUtsi_ssl_client_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_get0_next_proto_negotiated referenced in function "enum tsi_result __cdecl ssl_handshaker_result_extract_peer(struct tsi_handshaker_result const *,struct tsi_peer *)" (?ssl_handshaker_result_extract_peer@@YA?AW4tsi_result@@PEBUtsi_handshaker_result@@PEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_set_alpn_protos referenced in function "enum tsi_result __cdecl tsi_create_ssl_client_handshaker_factory_with_options(struct tsi_ssl_client_handshaker_options const *,struct tsi_ssl_client_handshaker_factory * *)" (?tsi_create_ssl_client_handshaker_factory_with_options@@YA?AW4tsi_result@@PEBUtsi_ssl_client_handshaker_options@@PEAPEAUtsi_ssl_client_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_set_alpn_select_cb referenced in function "enum tsi_result __cdecl tsi_create_ssl_server_handshaker_factory_ex(struct tsi_ssl_pem_key_cert_pair const *,unsigned __int64,char const *,enum tsi_client_certificate_request_type,char const *,char const * *,unsigned short,struct tsi_ssl_server_handshaker_factory * *)" (?tsi_create_ssl_server_handshaker_factory_ex@@YA?AW4tsi_result@@PEBUtsi_ssl_pem_key_cert_pair@@_KPEBDW4tsi_client_certificate_request_type@@2PEAPEBDGPEAPEAUtsi_ssl_server_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_get0_alpn_selected referenced in function "enum tsi_result __cdecl ssl_handshaker_result_extract_peer(struct tsi_handshaker_result const *,struct tsi_peer *)" (?ssl_handshaker_result_extract_peer@@YA?AW4tsi_result@@PEBUtsi_handshaker_result@@PEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_get_servername referenced in function "enum tsi_result __cdecl create_tsi_ssl_handshaker(struct ssl_ctx_st *,int,char const *,struct tsi_ssl_handshaker_factory *,struct tsi_handshaker * *)" (?create_tsi_ssl_handshaker@@YA?AW4tsi_result@@PEAUssl_ctx_st@@HPEBDPEAUtsi_ssl_handshaker_factory@@PEAPEAUtsi_handshaker@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_is_init_finished referenced in function "enum tsi_result __cdecl ssl_handshaker_next(struct tsi_handshaker *,unsigned char const *,unsigned __int64,unsigned char const * *,unsigned __int64 *,struct tsi_handshaker_result * *,void (__cdecl*)(enum tsi_result,void *,unsigned char const *,unsigned __int64,struct tsi_handshaker_result *),void *)" (?ssl_handshaker_next@@YA?AW4tsi_result@@PEAUtsi_handshaker@@PEBE_KPEAPEBEPEA_KPEAPEAUtsi_handshaker_result@@P6AXW41@PEAX12PEAU3@@Z7@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_set_cipher_list referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_new referenced in function "enum tsi_result __cdecl tsi_create_ssl_client_handshaker_factory_with_options(struct tsi_ssl_client_handshaker_options const *,struct tsi_ssl_client_handshaker_factory * *)" (?tsi_create_ssl_client_handshaker_factory_with_options@@YA?AW4tsi_result@@PEBUtsi_ssl_client_handshaker_options@@PEAPEAUtsi_ssl_client_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_free referenced in function "void __cdecl tsi_ssl_client_handshaker_factory_destroy(struct tsi_ssl_handshaker_factory *)" (?tsi_ssl_client_handshaker_factory_destroy@@YAXPEAUtsi_ssl_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_get_cert_store referenced in function "enum tsi_result __cdecl ssl_ctx_load_verification_certs(struct ssl_ctx_st *,char const *,unsigned __int64,struct stack_st_X509_NAME * *)" (?ssl_ctx_load_verification_certs@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBD_KPEAPEAUstack_st_X509_NAME@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_set_cert_store referenced in function "enum tsi_result __cdecl tsi_create_ssl_client_handshaker_factory_with_options(struct tsi_ssl_client_handshaker_options const *,struct tsi_ssl_client_handshaker_factory * *)" (?tsi_create_ssl_client_handshaker_factory_with_options@@YA?AW4tsi_result@@PEBUtsi_ssl_client_handshaker_options@@PEAPEAUtsi_ssl_client_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_set_bio referenced in function "enum tsi_result __cdecl create_tsi_ssl_handshaker(struct ssl_ctx_st *,int,char const *,struct tsi_ssl_handshaker_factory *,struct tsi_handshaker * *)" (?create_tsi_ssl_handshaker@@YA?AW4tsi_result@@PEAUssl_ctx_st@@HPEBDPEAUtsi_ssl_handshaker_factory@@PEAPEAUtsi_handshaker@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_state_string referenced in function "void __cdecl ssl_info_callback(struct ssl_st const *,int,int)" (?ssl_info_callback@@YAXPEBUssl_st@@HH@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_state_string_long referenced in function "void __cdecl ssl_info_callback(struct ssl_st const *,int,int)" (?ssl_info_callback@@YAXPEBUssl_st@@HH@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_SESSION_free referenced in function "public: __cdecl std::unique_ptr<struct ssl_session_st,struct tsi::SslSessionDeleter>::~unique_ptr<struct ssl_session_st,struct tsi::SslSessionDeleter>(void)" (??1?$unique_ptr@Ussl_session_st@@USslSessionDeleter@tsi@@@std@@QEAA@XZ)
grpc.lib(ssl_session_cache.cc.obj) : error LNK2001: unresolved external symbol SSL_SESSION_free
grpc.lib(ssl_session_openssl.cc.obj) : error LNK2001: unresolved external symbol SSL_SESSION_free
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_set_session referenced in function "enum tsi_result __cdecl create_tsi_ssl_handshaker(struct ssl_ctx_st *,int,char const *,struct tsi_ssl_handshaker_factory *,struct tsi_handshaker * *)" (?create_tsi_ssl_handshaker@@YA?AW4tsi_result@@PEAUssl_ctx_st@@HPEBDPEAUtsi_ssl_handshaker_factory@@PEAPEAUtsi_handshaker@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_get_peer_certificate referenced in function "enum tsi_result __cdecl ssl_handshaker_result_extract_peer(struct tsi_handshaker_result const *,struct tsi_peer *)" (?ssl_handshaker_result_extract_peer@@YA?AW4tsi_result@@PEBUtsi_handshaker_result@@PEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_get_peer_cert_chain referenced in function "enum tsi_result __cdecl ssl_handshaker_result_extract_peer(struct tsi_handshaker_result const *,struct tsi_peer *)" (?ssl_handshaker_result_extract_peer@@YA?AW4tsi_result@@PEBUtsi_handshaker_result@@PEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_set_verify referenced in function "enum tsi_result __cdecl tsi_create_ssl_client_handshaker_factory_with_options(struct tsi_ssl_client_handshaker_options const *,struct tsi_ssl_client_handshaker_factory * *)" (?tsi_create_ssl_client_handshaker_factory_with_options@@YA?AW4tsi_result@@PEBUtsi_ssl_client_handshaker_options@@PEAPEAUtsi_ssl_client_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_use_PrivateKey referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_use_certificate referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_check_private_key referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_set_session_id_context referenced in function "enum tsi_result __cdecl tsi_create_ssl_server_handshaker_factory_ex(struct tsi_ssl_pem_key_cert_pair const *,unsigned __int64,char const *,enum tsi_client_certificate_request_type,char const *,char const * *,unsigned short,struct tsi_ssl_server_handshaker_factory * *)" (?tsi_create_ssl_server_handshaker_factory_ex@@YA?AW4tsi_result@@PEBUtsi_ssl_pem_key_cert_pair@@_KPEBDW4tsi_client_certificate_request_type@@2PEAPEBDGPEAPEAUtsi_ssl_server_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_new referenced in function "enum tsi_result __cdecl create_tsi_ssl_handshaker(struct ssl_ctx_st *,int,char const *,struct tsi_ssl_handshaker_factory *,struct tsi_handshaker * *)" (?create_tsi_ssl_handshaker@@YA?AW4tsi_result@@PEAUssl_ctx_st@@HPEBDPEAUtsi_ssl_handshaker_factory@@PEAPEAUtsi_handshaker@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_free referenced in function "void __cdecl ssl_protector_destroy(struct tsi_frame_protector *)" (?ssl_protector_destroy@@YAXPEAUtsi_frame_protector@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_read referenced in function "enum tsi_result __cdecl do_ssl_read(struct ssl_st *,unsigned char *,unsigned __int64 *)" (?do_ssl_read@@YA?AW4tsi_result@@PEAUssl_st@@PEAEPEA_K@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_write referenced in function "enum tsi_result __cdecl do_ssl_write(struct ssl_st *,unsigned char *,unsigned __int64)" (?do_ssl_write@@YA?AW4tsi_result@@PEAUssl_st@@PEAE_K@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_ctrl referenced in function "enum tsi_result __cdecl create_tsi_ssl_handshaker(struct ssl_ctx_st *,int,char const *,struct tsi_ssl_handshaker_factory *,struct tsi_handshaker * *)" (?create_tsi_ssl_handshaker@@YA?AW4tsi_result@@PEAUssl_ctx_st@@HPEBDPEAUtsi_ssl_handshaker_factory@@PEAPEAUtsi_handshaker@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_ctrl referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_callback_ctrl referenced in function "enum tsi_result __cdecl tsi_create_ssl_server_handshaker_factory_ex(struct tsi_ssl_pem_key_cert_pair const *,unsigned __int64,char const *,enum tsi_client_certificate_request_type,char const *,char const * *,unsigned short,struct tsi_ssl_server_handshaker_factory * *)" (?tsi_create_ssl_server_handshaker_factory_ex@@YA?AW4tsi_result@@PEBUtsi_ssl_pem_key_cert_pair@@_KPEBDW4tsi_client_certificate_request_type@@2PEAPEBDGPEAPEAUtsi_ssl_server_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_get_error referenced in function "enum tsi_result __cdecl ssl_handshaker_next(struct tsi_handshaker *,unsigned char const *,unsigned __int64,unsigned char const * *,unsigned __int64 *,struct tsi_handshaker_result * *,void (__cdecl*)(enum tsi_result,void *,unsigned char const *,unsigned __int64,struct tsi_handshaker_result *),void *)" (?ssl_handshaker_next@@YA?AW4tsi_result@@PEAUtsi_handshaker@@PEBE_KPEAPEBEPEA_KPEAPEAUtsi_handshaker_result@@P6AXW41@PEAX12PEAU3@@Z7@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol TLSv1_2_method referenced in function "enum tsi_result __cdecl tsi_create_ssl_client_handshaker_factory_with_options(struct tsi_ssl_client_handshaker_options const *,struct tsi_ssl_client_handshaker_factory * *)" (?tsi_create_ssl_client_handshaker_factory_with_options@@YA?AW4tsi_result@@PEBUtsi_ssl_client_handshaker_options@@PEAPEAUtsi_ssl_client_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_do_handshake referenced in function "enum tsi_result __cdecl ssl_handshaker_next(struct tsi_handshaker *,unsigned char const *,unsigned __int64,unsigned char const * *,unsigned __int64 *,struct tsi_handshaker_result * *,void (__cdecl*)(enum tsi_result,void *,unsigned char const *,unsigned __int64,struct tsi_handshaker_result *),void *)" (?ssl_handshaker_next@@YA?AW4tsi_result@@PEAUtsi_handshaker@@PEBE_KPEAPEBEPEA_KPEAPEAUtsi_handshaker_result@@P6AXW41@PEAX12PEAU3@@Z7@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_set_client_CA_list referenced in function "enum tsi_result __cdecl tsi_create_ssl_server_handshaker_factory_ex(struct tsi_ssl_pem_key_cert_pair const *,unsigned __int64,char const *,enum tsi_client_certificate_request_type,char const *,char const * *,unsigned short,struct tsi_ssl_server_handshaker_factory * *)" (?tsi_create_ssl_server_handshaker_factory_ex@@YA?AW4tsi_result@@PEBUtsi_ssl_pem_key_cert_pair@@_KPEBDW4tsi_client_certificate_request_type@@2PEAPEBDGPEAPEAUtsi_ssl_server_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_set_connect_state referenced in function "enum tsi_result __cdecl create_tsi_ssl_handshaker(struct ssl_ctx_st *,int,char const *,struct tsi_ssl_handshaker_factory *,struct tsi_handshaker * *)" (?create_tsi_ssl_handshaker@@YA?AW4tsi_result@@PEAUssl_ctx_st@@HPEBDPEAUtsi_ssl_handshaker_factory@@PEAPEAUtsi_handshaker@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_set_accept_state referenced in function "enum tsi_result __cdecl create_tsi_ssl_handshaker(struct ssl_ctx_st *,int,char const *,struct tsi_ssl_handshaker_factory *,struct tsi_handshaker * *)" (?create_tsi_ssl_handshaker@@YA?AW4tsi_result@@PEAUssl_ctx_st@@HPEBDPEAUtsi_ssl_handshaker_factory@@PEAPEAUtsi_handshaker@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_get_SSL_CTX referenced in function "int __cdecl server_handshaker_factory_new_session_callback(struct ssl_st *,struct ssl_session_st *)" (?server_handshaker_factory_new_session_callback@@YAHPEAUssl_st@@PEAUssl_session_st@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_set_SSL_CTX referenced in function "int __cdecl ssl_server_handshaker_factory_servername_callback(struct ssl_st *,int *,void *)" (?ssl_server_handshaker_factory_servername_callback@@YAHPEAUssl_st@@PEAHPEAX@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_set_info_callback referenced in function "enum tsi_result __cdecl create_tsi_ssl_handshaker(struct ssl_ctx_st *,int,char const *,struct tsi_ssl_handshaker_factory *,struct tsi_handshaker * *)" (?create_tsi_ssl_handshaker@@YA?AW4tsi_result@@PEAUssl_ctx_st@@HPEBDPEAUtsi_ssl_handshaker_factory@@PEAPEAUtsi_handshaker@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_set_ex_data referenced in function "enum tsi_result __cdecl tsi_create_ssl_client_handshaker_factory_with_options(struct tsi_ssl_client_handshaker_options const *,struct tsi_ssl_client_handshaker_factory * *)" (?tsi_create_ssl_client_handshaker_factory_with_options@@YA?AW4tsi_result@@PEBUtsi_ssl_client_handshaker_options@@PEAPEAUtsi_ssl_client_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_get_ex_data referenced in function "int __cdecl server_handshaker_factory_new_session_callback(struct ssl_st *,struct ssl_session_st *)" (?server_handshaker_factory_new_session_callback@@YAHPEAUssl_st@@PEAUssl_session_st@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_session_reused referenced in function "enum tsi_result __cdecl ssl_handshaker_result_extract_peer(struct tsi_handshaker_result const *,struct tsi_peer *)" (?ssl_handshaker_result_extract_peer@@YA?AW4tsi_result@@PEBUtsi_handshaker_result@@PEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol OPENSSL_init_ssl referenced in function "void __cdecl init_openssl(void)" (?init_openssl@@YAXXZ)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol GENERAL_NAME_free referenced in function "enum tsi_result __cdecl peer_from_x509(struct x509_st *,int,struct tsi_peer *)" (?peer_from_x509@@YA?AW4tsi_result@@PEAUx509_st@@HPEAUtsi_peer@@@Z)
grpc.lib(message_compress.cc.obj) : error LNK2019: unresolved external symbol deflate referenced in function "int __cdecl zlib_compress(struct grpc_slice_buffer *,struct grpc_slice_buffer *,int)" (?zlib_compress@@YAHPEAUgrpc_slice_buffer@@0H@Z)
grpc.lib(stream_compression_gzip.cc.obj) : error LNK2001: unresolved external symbol deflate
grpc.lib(message_compress.cc.obj) : error LNK2019: unresolved external symbol deflateEnd referenced in function "int __cdecl zlib_compress(struct grpc_slice_buffer *,struct grpc_slice_buffer *,int)" (?zlib_compress@@YAHPEAUgrpc_slice_buffer@@0H@Z)
grpc.lib(stream_compression_gzip.cc.obj) : error LNK2001: unresolved external symbol deflateEnd
grpc.lib(message_compress.cc.obj) : error LNK2019: unresolved external symbol inflate referenced in function "int __cdecl zlib_decompress(struct grpc_slice_buffer *,struct grpc_slice_buffer *,int)" (?zlib_decompress@@YAHPEAUgrpc_slice_buffer@@0H@Z)
grpc.lib(stream_compression_gzip.cc.obj) : error LNK2001: unresolved external symbol inflate
grpc.lib(message_compress.cc.obj) : error LNK2019: unresolved external symbol inflateEnd referenced in function "int __cdecl zlib_decompress(struct grpc_slice_buffer *,struct grpc_slice_buffer *,int)" (?zlib_decompress@@YAHPEAUgrpc_slice_buffer@@0H@Z)
grpc.lib(stream_compression_gzip.cc.obj) : error LNK2001: unresolved external symbol inflateEnd
grpc.lib(message_compress.cc.obj) : error LNK2019: unresolved external symbol deflateInit2_ referenced in function "int __cdecl zlib_compress(struct grpc_slice_buffer *,struct grpc_slice_buffer *,int)" (?zlib_compress@@YAHPEAUgrpc_slice_buffer@@0H@Z)
grpc.lib(stream_compression_gzip.cc.obj) : error LNK2001: unresolved external symbol deflateInit2_
grpc.lib(message_compress.cc.obj) : error LNK2019: unresolved external symbol inflateInit2_ referenced in function "int __cdecl zlib_decompress(struct grpc_slice_buffer *,struct grpc_slice_buffer *,int)" (?zlib_decompress@@YAHPEAUgrpc_slice_buffer@@0H@Z)
grpc.lib(stream_compression_gzip.cc.obj) : error LNK2001: unresolved external symbol inflateInit2_
grpc.lib(ssl_session_openssl.cc.obj) : error LNK2019: unresolved external symbol i2d_SSL_SESSION referenced in function "class std::unique_ptr<class tsi::`anonymous namespace'::OpenSslCachedSession,struct std::default_delete<class tsi::`anonymous namespace'::OpenSslCachedSession> > __cdecl std::make_unique<class tsi::`anonymous namespace'::OpenSslCachedSession,class std::unique_ptr<struct ssl_session_st,struct tsi::SslSessionDeleter>,0>(class std::unique_ptr<struct ssl_session_st,struct tsi::SslSessionDeleter> &&)" (??$make_unique@VOpenSslCachedSession@?A0xafaf4fbc@tsi@@V?$unique_ptr@Ussl_session_st@@USslSessionDeleter@tsi@@@std@@$0A@@std@@YA?AV?$unique_ptr@VOpenSslCachedSession@?A0xafaf4fbc@tsi@@U?$default_delete@VOpenSslCachedSession@?A0xafaf4fbc@tsi@@@std@@@0@$$QEAV?$unique_ptr@Ussl_session_st@@USslSessionDeleter@tsi@@@0@@Z)
grpc.lib(ssl_session_openssl.cc.obj) : error LNK2019: unresolved external symbol d2i_SSL_SESSION referenced in function "public: virtual class std::unique_ptr<struct ssl_session_st,struct tsi::SslSessionDeleter> __cdecl tsi::`anonymous namespace'::OpenSslCachedSession::CopySession(void)const " (?CopySession@OpenSslCachedSession@?A0xafaf4fbc@tsi@@UEBA?AV?$unique_ptr@Ussl_session_st@@USslSessionDeleter@tsi@@@std@@XZ)
grpc.lib(json_token.cc.obj) : error LNK2019: unresolved external symbol BIO_puts referenced in function "struct grpc_auth_json_key __cdecl grpc_auth_json_key_create_from_json(class grpc_core::Json const &)" (?grpc_auth_json_key_create_from_json@@YA?AUgrpc_auth_json_key@@AEBVJson@grpc_core@@@Z)
grpc.lib(json_token.cc.obj) : error LNK2019: unresolved external symbol RSA_free referenced in function "struct grpc_auth_json_key __cdecl grpc_auth_json_key_create_from_json(class grpc_core::Json const &)" (?grpc_auth_json_key_create_from_json@@YA?AUgrpc_auth_json_key@@AEBVJson@grpc_core@@@Z)
grpc.lib(json_token.cc.obj) : error LNK2019: unresolved external symbol EVP_MD_CTX_new referenced in function "char * __cdecl compute_and_encode_signature(struct grpc_auth_json_key const *,char const *,char const *)" (?compute_and_encode_signature@@YAPEADPEBUgrpc_auth_json_key@@PEBD1@Z)
grpc.lib(json_token.cc.obj) : error LNK2019: unresolved external symbol EVP_MD_CTX_free referenced in function "char * __cdecl compute_and_encode_signature(struct grpc_auth_json_key const *,char const *,char const *)" (?compute_and_encode_signature@@YAPEADPEBUgrpc_auth_json_key@@PEBD1@Z)
grpc.lib(json_token.cc.obj) : error LNK2019: unresolved external symbol EVP_DigestUpdate referenced in function "char * __cdecl compute_and_encode_signature(struct grpc_auth_json_key const *,char const *,char const *)" (?compute_and_encode_signature@@YAPEADPEBUgrpc_auth_json_key@@PEBD1@Z)
grpc.lib(json_token.cc.obj) : error LNK2019: unresolved external symbol EVP_DigestSignInit referenced in function "char * __cdecl compute_and_encode_signature(struct grpc_auth_json_key const *,char const *,char const *)" (?compute_and_encode_signature@@YAPEADPEBUgrpc_auth_json_key@@PEBD1@Z)
grpc.lib(json_token.cc.obj) : error LNK2019: unresolved external symbol EVP_DigestSignFinal referenced in function "char * __cdecl compute_and_encode_signature(struct grpc_auth_json_key const *,char const *,char const *)" (?compute_and_encode_signature@@YAPEADPEBUgrpc_auth_json_key@@PEBD1@Z)
grpc.lib(json_token.cc.obj) : error LNK2019: unresolved external symbol EVP_sha256 referenced in function "char * __cdecl compute_and_encode_signature(struct grpc_auth_json_key const *,char const *,char const *)" (?compute_and_encode_signature@@YAPEADPEBUgrpc_auth_json_key@@PEBD1@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2001: unresolved external symbol EVP_sha256
grpc.lib(json_token.cc.obj) : error LNK2019: unresolved external symbol EVP_PKEY_set1_RSA referenced in function "char * __cdecl compute_and_encode_signature(struct grpc_auth_json_key const *,char const *,char const *)" (?compute_and_encode_signature@@YAPEADPEBUgrpc_auth_json_key@@PEBD1@Z)
grpc.lib(json_token.cc.obj) : error LNK2019: unresolved external symbol EVP_PKEY_new referenced in function "char * __cdecl compute_and_encode_signature(struct grpc_auth_json_key const *,char const *,char const *)" (?compute_and_encode_signature@@YAPEADPEBUgrpc_auth_json_key@@PEBD1@Z)
grpc.lib(json_token.cc.obj) : error LNK2019: unresolved external symbol PEM_read_bio_RSAPrivateKey referenced in function "struct grpc_auth_json_key __cdecl grpc_auth_json_key_create_from_json(class grpc_core::Json const &)" (?grpc_auth_json_key_create_from_json@@YA?AUgrpc_auth_json_key@@AEBVJson@grpc_core@@@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol BIO_free_all referenced in function "enum grpc_status_code __cdecl gsec_aes_gcm_aead_crypter_encrypt_iovec(struct gsec_aead_crypter *,unsigned char const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec,unsigned __int64 *,char * *)" (?gsec_aes_gcm_aead_crypter_encrypt_iovec@@YA?AW4grpc_status_code@@PEAUgsec_aead_crypter@@PEBE_KPEBUiovec@@232U3@PEA_KPEAPEAD@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol ERR_print_errors referenced in function "enum grpc_status_code __cdecl gsec_aes_gcm_aead_crypter_encrypt_iovec(struct gsec_aead_crypter *,unsigned char const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec,unsigned __int64 *,char * *)" (?gsec_aes_gcm_aead_crypter_encrypt_iovec@@YA?AW4grpc_status_code@@PEAUgsec_aead_crypter@@PEBE_KPEBUiovec@@232U3@PEA_KPEAPEAD@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol EVP_EncryptInit_ex referenced in function "enum grpc_status_code __cdecl gsec_aes_gcm_aead_crypter_encrypt_iovec(struct gsec_aead_crypter *,unsigned char const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec,unsigned __int64 *,char * *)" (?gsec_aes_gcm_aead_crypter_encrypt_iovec@@YA?AW4grpc_status_code@@PEAUgsec_aead_crypter@@PEBE_KPEBUiovec@@232U3@PEA_KPEAPEAD@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol EVP_EncryptUpdate referenced in function "enum grpc_status_code __cdecl gsec_aes_gcm_aead_crypter_encrypt_iovec(struct gsec_aead_crypter *,unsigned char const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec,unsigned __int64 *,char * *)" (?gsec_aes_gcm_aead_crypter_encrypt_iovec@@YA?AW4grpc_status_code@@PEAUgsec_aead_crypter@@PEBE_KPEBUiovec@@232U3@PEA_KPEAPEAD@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol EVP_EncryptFinal_ex referenced in function "enum grpc_status_code __cdecl gsec_aes_gcm_aead_crypter_encrypt_iovec(struct gsec_aead_crypter *,unsigned char const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec,unsigned __int64 *,char * *)" (?gsec_aes_gcm_aead_crypter_encrypt_iovec@@YA?AW4grpc_status_code@@PEAUgsec_aead_crypter@@PEBE_KPEBUiovec@@232U3@PEA_KPEAPEAD@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol EVP_DecryptInit_ex referenced in function "enum grpc_status_code __cdecl gsec_aes_gcm_aead_crypter_decrypt_iovec(struct gsec_aead_crypter *,unsigned char const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec,unsigned __int64 *,char * *)" (?gsec_aes_gcm_aead_crypter_decrypt_iovec@@YA?AW4grpc_status_code@@PEAUgsec_aead_crypter@@PEBE_KPEBUiovec@@232U3@PEA_KPEAPEAD@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol EVP_DecryptUpdate referenced in function "enum grpc_status_code __cdecl gsec_aes_gcm_aead_crypter_decrypt_iovec(struct gsec_aead_crypter *,unsigned char const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec,unsigned __int64 *,char * *)" (?gsec_aes_gcm_aead_crypter_decrypt_iovec@@YA?AW4grpc_status_code@@PEAUgsec_aead_crypter@@PEBE_KPEBUiovec@@232U3@PEA_KPEAPEAD@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol EVP_DecryptFinal_ex referenced in function "enum grpc_status_code __cdecl gsec_aes_gcm_aead_crypter_decrypt_iovec(struct gsec_aead_crypter *,unsigned char const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec,unsigned __int64 *,char * *)" (?gsec_aes_gcm_aead_crypter_decrypt_iovec@@YA?AW4grpc_status_code@@PEAUgsec_aead_crypter@@PEBE_KPEBUiovec@@232U3@PEA_KPEAPEAD@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol EVP_CIPHER_CTX_new referenced in function "enum grpc_status_code __cdecl gsec_aes_gcm_aead_crypter_create(unsigned char const *,unsigned __int64,unsigned __int64,unsigned __int64,bool,struct gsec_aead_crypter * *,char * *)" (?gsec_aes_gcm_aead_crypter_create@@YA?AW4grpc_status_code@@PEBE_K11_NPEAPEAUgsec_aead_crypter@@PEAPEAD@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol EVP_CIPHER_CTX_free referenced in function "void __cdecl gsec_aes_gcm_aead_crypter_destroy(struct gsec_aead_crypter *)" (?gsec_aes_gcm_aead_crypter_destroy@@YAXPEAUgsec_aead_crypter@@@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol EVP_CIPHER_CTX_ctrl referenced in function "enum grpc_status_code __cdecl gsec_aes_gcm_aead_crypter_encrypt_iovec(struct gsec_aead_crypter *,unsigned char const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec,unsigned __int64 *,char * *)" (?gsec_aes_gcm_aead_crypter_encrypt_iovec@@YA?AW4grpc_status_code@@PEAUgsec_aead_crypter@@PEBE_KPEBUiovec@@232U3@PEA_KPEAPEAD@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol EVP_aes_128_gcm referenced in function "enum grpc_status_code __cdecl aes_gcm_new_evp_cipher_ctx(struct gsec_aes_gcm_aead_crypter *,char * *)" (?aes_gcm_new_evp_cipher_ctx@@YA?AW4grpc_status_code@@PEAUgsec_aes_gcm_aead_crypter@@PEAPEAD@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol EVP_aes_256_gcm referenced in function "enum grpc_status_code __cdecl aes_gcm_new_evp_cipher_ctx(struct gsec_aes_gcm_aead_crypter *,char * *)" (?aes_gcm_new_evp_cipher_ctx@@YA?AW4grpc_status_code@@PEAUgsec_aes_gcm_aead_crypter@@PEAPEAD@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol HMAC_CTX_new referenced in function "enum grpc_status_code __cdecl aes_gcm_derive_aead_key(unsigned char *,unsigned char const *,unsigned char const *)" (?aes_gcm_derive_aead_key@@YA?AW4grpc_status_code@@PEAEPEBE1@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol HMAC_CTX_free referenced in function "enum grpc_status_code __cdecl aes_gcm_derive_aead_key(unsigned char *,unsigned char const *,unsigned char const *)" (?aes_gcm_derive_aead_key@@YA?AW4grpc_status_code@@PEAEPEBE1@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol HMAC_Init_ex referenced in function "enum grpc_status_code __cdecl aes_gcm_derive_aead_key(unsigned char *,unsigned char const *,unsigned char const *)" (?aes_gcm_derive_aead_key@@YA?AW4grpc_status_code@@PEAEPEBE1@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol HMAC_Update referenced in function "enum grpc_status_code __cdecl aes_gcm_derive_aead_key(unsigned char *,unsigned char const *,unsigned char const *)" (?aes_gcm_derive_aead_key@@YA?AW4grpc_status_code@@PEAEPEBE1@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol HMAC_Final referenced in function "enum grpc_status_code __cdecl aes_gcm_derive_aead_key(unsigned char *,unsigned char const *,unsigned char const *)" (?aes_gcm_derive_aead_key@@YA?AW4grpc_status_code@@PEAEPEBE1@Z)

해당 라이브러리들 추가 필요

alkee-allm commented 4 years ago

abseil, upb, SSL, ... 라이브러리 링크 에러 발생. 해당 라이브러리들 추가 필요

오류가 발생하는 경우, 오류내용(debug output)도 함께 기록해주시면 좋겠습니다.

ReU4752 commented 4 years ago

OpenSSL 라이브러리는 전에 추가를 했음에도 위와 같은 링크 에러 발생

9e790759bce6a1ebeb8c3300eb34650ff40cf358

AddEngineThirdPartyPrivateStaticDependencies(Target, "OpenSSL");
ReU4752 commented 4 years ago

ed73da03398b0ab099431d8bebba8b4315d3b9c7 gRPC 에서 필요로했던 OpenSSL 버전과 언리얼에서 제공해주는 OpenSSL 버전이 다름 (로컬에서 gRPC가 사용중이던 버전은 OpenSSL 1.1.1g, UE4 4.25.3 는 Win64 기준 OpenSSL 1.1.1 Engine/Source/ThirdParty/OpenSSL/OpenSSL.build.cs 에서 사용 버전 확인 가능)

vcpkg로 gRPC 를 설치하면서 종속적으로 함께 설치된 OpenSSL 라이브러리를 추가하니 빌드 성공

ReU4752 commented 4 years ago

c++ client 의 코드를 참조하여 UE4 용 client 제작

ReU4752 commented 4 years ago
auto status = initStub.State(&context, empty, &rsp);

ID PW 입력 후 Login 호출 시 크래쉬 발생

[2020.09.16-02.32.29:791][ 54]LogWindows: Error: Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0xffffffff
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff88e8f5b0b UE4Editor-Core.dll!UnknownFunction []
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff88e8f702e UE4Editor-Core.dll!UnknownFunction []
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff88e8fa4a3 UE4Editor-Core.dll!UnknownFunction []
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff88e4f67e7 UE4Editor-Core.dll!UnknownFunction []
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff86741635a UE4Editor-K2UE4.dll!operator delete() [D:\k2proto\K2UE4\Source\K2UE4\K2UE4.cpp:6]
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff867576640 UE4Editor-K2UE4.dll!grpc_core::ChildPolicyHandler::CreateChildPolicy() [D:\vcpkg\buildtrees\grpc\src\f1b4c24419-dd45943f9a.clean\src\core\ext\filters\client_channel\lb_policy\child_policy_handler.cc:273]
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff867576af1 UE4Editor-K2UE4.dll!grpc_core::ChildPolicyHandler::UpdateLocked() [D:\vcpkg\buildtrees\grpc\src\f1b4c24419-dd45943f9a.clean\src\core\ext\filters\client_channel\lb_policy\child_policy_handler.cc:211]
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff867560d9c UE4Editor-K2UE4.dll!grpc_core::ResolvingLoadBalancingPolicy::CreateOrUpdateLbPolicyLocked() [D:\vcpkg\buildtrees\grpc\src\f1b4c24419-dd45943f9a.clean\src\core\ext\filters\client_channel\resolving_lb_policy.cc:241]
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff86756139b UE4Editor-K2UE4.dll!grpc_core::ResolvingLoadBalancingPolicy::OnResolverResultChangedLocked() [D:\vcpkg\buildtrees\grpc\src\f1b4c24419-dd45943f9a.clean\src\core\ext\filters\client_channel\resolving_lb_policy.cc:345]
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff8675616f3 UE4Editor-K2UE4.dll!grpc_core::ResolvingLoadBalancingPolicy::ResolverResultHandler::ReturnResult() [D:\vcpkg\buildtrees\grpc\src\f1b4c24419-dd45943f9a.clean\src\core\ext\filters\client_channel\resolving_lb_policy.cc:88]
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff867532f34 UE4Editor-K2UE4.dll!grpc_core::`anonymous namespace'::AresDnsResolver::OnResolvedLocked() [D:\vcpkg\buildtrees\grpc\src\f1b4c24419-dd45943f9a.clean\src\core\ext\filters\client_channel\resolver\dns\c_ares\dns_resolver_ares.cc:359]
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff8674b9ab9 UE4Editor-K2UE4.dll!grpc_combiner_continue_exec_ctx() [D:\vcpkg\buildtrees\grpc\src\f1b4c24419-dd45943f9a.clean\src\core\lib\iomgr\combiner.cc:237]
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff86746f72e UE4Editor-K2UE4.dll!grpc_core::ExecCtx::Flush() [D:\vcpkg\buildtrees\grpc\src\f1b4c24419-dd45943f9a.clean\src\core\lib\iomgr\exec_ctx.cc:156]
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff867463b63 UE4Editor-K2UE4.dll!grpc_call_start_batch() [D:\vcpkg\buildtrees\grpc\src\f1b4c24419-dd45943f9a.clean\src\core\lib\surface\call.cc:1975]
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff8674323ee UE4Editor-K2UE4.dll!grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata,grpc::internal::CallOpSendMessage,grpc::internal::CallOpRecvInitialMetadata,grpc::internal::CallOpRecvMessage<K2::StateResponse>,grpc::internal::CallOpClientSendClose,grpc::internal::CallOpClientRecvStatus>::ContinueFillOpsAfterInterception() [D:\k2proto\K2UE4\Plugins\gRPC\Source\ThirdParty\grpc_x64-windows\include\grpcpp\impl\codegen\call_op_set.h:941]
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff8674361f1 UE4Editor-K2UE4.dll!grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata,grpc::internal::CallOpSendMessage,grpc::internal::CallOpRecvInitialMetadata,grpc::internal::CallOpRecvMessage<K2::StateResponse>,grpc::internal::CallOpClientSendClose,grpc::internal::CallOpClientRecvStatus>::FillOps() [D:\k2proto\K2UE4\Plugins\gRPC\Source\ThirdParty\grpc_x64-windows\include\grpcpp\impl\codegen\call_op_set.h:873]
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff86742607d UE4Editor-K2UE4.dll!grpc::internal::BlockingUnaryCallImpl<K2::Null,K2::StateResponse>::BlockingUnaryCallImpl<K2::Null,K2::StateResponse>() [D:\k2proto\K2UE4\Plugins\gRPC\Source\ThirdParty\grpc_x64-windows\include\grpcpp\impl\codegen\client_unary_call.h:72]
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff8674416ce UE4Editor-K2UE4.dll!K2::Init::Stub::State() [D:\k2proto\K2UE4\Source\K2UE4\Proto\sample.grpc.pb.cc:68]
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff867415173 UE4Editor-K2UE4.dll!UKritikaGameInstance::Login() [D:\k2proto\K2UE4\Source\K2UE4\Private\KritikaGameInstance.cpp:72]
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff867416e25 UE4Editor-K2UE4.dll!UKritikaGameInstance::execLogin() [D:\k2proto\K2UE4\Intermediate\Build\Win64\UE4Editor\Inc\K2UE4\KritikaGameInstance.gen.cpp:34]
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff8b0540ae4 UE4Editor-CoreUObject.dll!UnknownFunction []
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff8b07900dd UE4Editor-CoreUObject.dll!UnknownFunction []
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff8b07b3113 UE4Editor-CoreUObject.dll!UnknownFunction []
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff8b07dcaf8 UE4Editor-CoreUObject.dll!UnknownFunction []
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff8b07b574d UE4Editor-CoreUObject.dll!UnknownFunction []
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff8b0783bea UE4Editor-CoreUObject.dll!UnknownFunction []
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff8b07b5392 UE4Editor-CoreUObject.dll!UnknownFunction []
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff8b07b574d UE4Editor-CoreUObject.dll!UnknownFunction []
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff8b07b4c54 UE4Editor-CoreUObject.dll!UnknownFunction []
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff8b0540ae4 UE4Editor-CoreUObject.dll!UnknownFunction []
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff8b07b4783 UE4Editor-CoreUObject.dll!UnknownFunction []
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff88bce917b UE4Editor-UMG.dll!UnknownFunction []
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff88be056c7 UE4Editor-UMG.dll!UnknownFunction []
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff88bd7b963 UE4Editor-UMG.dll!UnknownFunction []
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff88ddd207e UE4Editor-Slate.dll!UnknownFunction []
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff88ddeb27e UE4Editor-Slate.dll!UnknownFunction []
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff88dc32dc8 UE4Editor-Slate.dll!UnknownFunction []
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff88dcb69cf UE4Editor-Slate.dll!UnknownFunction []
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff88dc9f4b2 UE4Editor-Slate.dll!UnknownFunction []
[2020.09.16-02.32.29:791][ 54]LogWindows: Error: [Callstack] 0x00007ff88dc92392 UE4Editor-Slate.dll!UnknownFunction []
alkee-allm commented 4 years ago

오류 기록시에는 굳이 전체 log 를 기록할 필요 없고, 문제해결에 주요한(전체가 필요한 경우라면 전체가 될 수도..)부분만 기록해주시면 됩니다. 이 경우에는

[2020.09.16-02.32.29:791][ 54]LogWindows: Error: Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0xffffffff

와 첨부해주신 소스 부분이 되겠네요.

이 문제는 contextrsp 의 잘못된 참조 (이미 삭제된 개체거나 다른 thread 에서 수정한 경우)일 듯 하고요. 참고로 한번 사용한 context 는 재사용할 수 없으므로 한 번 호출할때마다 새로운 context 를 생성해서(local variable 추천) 사용해야합니다.

참고 : C++ project(visual studio) 에서 gRPC 사용 구성 방법 의 항목 7

ReU4752 commented 4 years ago

UE4에서 std::string 을 사용 시 delete 부분에서 항상 문제 발생

UE4Editor-K2UE4.dll!operator delete(void * Ptr, unsigned __int64 Size) Line 6   C++
[Inline Frame] UE4Editor-K2UE4.dll!std::_Deallocate(void * _Ptr, unsigned __int64 _Bytes) Line 195  C++
[Inline Frame] UE4Editor-K2UE4.dll!std::allocator<char>::deallocate(char * const _Count, const unsigned __int64) Line 780   C++
[Inline Frame] UE4Editor-K2UE4.dll!std::string::_Tidy_deallocate() Line 4214    C++
[Inline Frame] UE4Editor-K2UE4.dll!std::string::{dtor}() Line 2629  C++
UE4Editor-K2UE4.dll!grpc_core::ChildPolicyHandler::CreateChildPolicy(const char * child_policy_name, const grpc_channel_args & args) Line 273   C++
UE4Editor-K2UE4.dll!grpc_core::ChildPolicyHandler::UpdateLocked(grpc_core::LoadBalancingPolicy::UpdateArgs args) Line 211   C++
UE4Editor-K2UE4.dll!grpc_core::ResolvingLoadBalancingPolicy::CreateOrUpdateLbPolicyLocked(grpc_core::RefCountedPtr<grpc_core::LoadBalancingPolicy::Config> lb_policy_config, grpc_core::Resolver::Result result) Line 241   C++
UE4Editor-K2UE4.dll!grpc_core::ResolvingLoadBalancingPolicy::OnResolverResultChangedLocked(grpc_core::Resolver::Result result) Line 345 C++
UE4Editor-K2UE4.dll!grpc_core::ResolvingLoadBalancingPolicy::ResolverResultHandler::ReturnResult(grpc_core::Resolver::Result result) Line 88    C++
UE4Editor-K2UE4.dll!grpc_core::`anonymous namespace'::AresDnsResolver::OnResolvedLocked(void * arg, grpc_error * error) Line 359    C++
UE4Editor-K2UE4.dll!grpc_combiner_continue_exec_ctx() Line 237  C++
UE4Editor-K2UE4.dll!grpc_core::ExecCtx::Flush() Line 156    C++
[Inline Frame] UE4Editor-K2UE4.dll!grpc_core::ExecCtx::{dtor}() Line 124    C++
UE4Editor-K2UE4.dll!grpc_call_start_batch(grpc_call * call, const grpc_op * ops, unsigned __int64 nops, void * tag, void * reserved) Line 1975  C++
UE4Editor-K2UE4.dll!grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata,grpc::internal::CallOpSendMessage,grpc::internal::CallOpRecvInitialMetadata,grpc::internal::CallOpRecvMessage<K2::StateResponse>,grpc::internal::CallOpClientSendClose,grpc::internal::CallOpClientRecvStatus>::ContinueFillOpsAfterInterception() Line 941 C++
UE4Editor-K2UE4.dll!grpc::internal::CallOpSet<grpc::internal::CallOpSendInitialMetadata,grpc::internal::CallOpSendMessage,grpc::internal::CallOpRecvInitialMetadata,grpc::internal::CallOpRecvMessage<K2::StateResponse>,grpc::internal::CallOpClientSendClose,grpc::internal::CallOpClientRecvStatus>::FillOps(grpc::internal::Call * call) Line 873   C++
[Inline Frame] UE4Editor-K2UE4.dll!grpc::internal::Call::PerformOps(grpc::internal::CallOpSetInterface *) Line 69   C++
UE4Editor-K2UE4.dll!grpc::internal::BlockingUnaryCallImpl<K2::Null,K2::StateResponse>::BlockingUnaryCallImpl<K2::Null,K2::StateResponse>(grpc::ChannelInterface * channel, const grpc::internal::RpcMethod & method, grpc_impl::ClientContext * context, const K2::Null & request, K2::StateResponse * result) Line 72  C++
[Inline Frame] UE4Editor-K2UE4.dll!grpc::internal::BlockingUnaryCall(grpc::ChannelInterface *) Line 41  C++
UE4Editor-K2UE4.dll!K2::Init::Stub::State(grpc_impl::ClientContext * context, const K2::Null & request, K2::StateResponse * response) Line 68   C++
UE4Editor-K2UE4.dll!UKritikaGameInstance::Login(const FString id, const FString pw) Line 80 C++
UE4Editor-K2UE4.dll!UKritikaGameInstance::Init() Line 61    C++
std::string CHANNEL_URL("localhost:9060");
auto creds = grpc::InsecureChannelCredentials();
auto initChannel = grpc::CreateChannel(CHANNEL_URL, creds);

여기서 std::string 을 const char* 로 type을 변경하여 몇번은 정상 작동되었지만, 그 다음 실행부터는 계속 같은 문제 발생 gRPC generated code 에서는 함수 파라미터으로 grpc::string 사용 중 (std::string을 매크로로 warpping 한 형태)

UE4에서 std::string 을 사용해도 문제가 없는지 확인해야할 듯, 혹은 다른 문제

ReU4752 commented 4 years ago

dll에 std:;string 을 넘길 때 인스턴스가 다르거나, dll 과의 runtime library가 다른 것 같음.. 혹은 컴파일 시에 서로 프로젝트 세팅이 다르거나.. (번외로. UE4 내에서 STL 사용은 큰 문제는 없다. 궁합이 안좋을 뿐) 현재 상태에서 마땅한 해결방안이 떠오르지 않음.

일단 그러면 직접 gRPC 를 빌드해서 static library로 처리해보자. 잘 된다면, Setup.bat(or .sh) 생성하여 이 작업들을 자동화 할 수 있는 방법으로?

alkee-allm commented 4 years ago

vcpkg 에서 package 의 빌드 방식을 변경하는 참고할만한 references

vcpkg/ports 경로에 해당 moudle 의 profile.cmake 가 있고 이 파일로부터 설정 전파

ReU4752 commented 4 years ago

일단 dll 로는 해결 방안이 도저히 생각이 안남... 언리얼은 기본 CRT 가 MD 로 확인됨. gRPC 와 관련 라이브러리들을 static library로 install 하고 CRT를 MD로 맞추자.

vcpkg/ports 경로에서 grpc moudle 의 profile.cmake 를 열어서,

_-DgRPC_MSVC_STATIC_RUNTIME=$(gRPC_MSVC_STATICRUNTIME)

_-DgRPC_MSVC_STATICRUNTIME=dynamic

으로 수정하여 gRPC 라이브러리의 CRT를 MD 로 강제 변경.

vcpkg 에서 gRPC, winsock2 package 들을 static 옵션을 붙여서 static library로 installl. (ex: .\vcpkg.exe install grpc:x64-windows-static) 설치된 파일을 플러그인 ThirdParty로 복사하여 실행 했지만 일단 안됨...

error LNK2038: mismatch detected for 'RuntimeLibrary': value 'MT_StaticRelease' doesn't match value 'MD_DynamicRelease' in SharedPCH.Engine.ShadowErrors.h.obj 링크 에러 메세지가 libprotobuf-lite.lib, grpc.lib, abs.lib 에서 발생

alkee-allm commented 4 years ago

참고 : https://www.lonely.coffee/blog/2020/4/20/ue4-protobuf-and-yarn-spinner 에서 보면,

The final part (-md) is saying we want the library to be built as a multithreaded specific library, and this is a requirement of linking in 3rd party code into Unreal.

와 같이 되어있네요. 따라서, vcpkg 가 종속성 빌드를 알맞게 해준다면

vcpkg.exe install grpc:x64-windows-static-md

만으로 잘 동작해야하지 않을까요?

ReU4752 commented 4 years ago

아 뒤에 런타임 옵션을 지정을 안했네요. 감사합니다.

-static-md 로 설치하고 ThirdParty 폴더에 라이브러리들 복사하여 빌드 시 OpenSSL 에서 libcrypto.lib 관련 링크 에러가 발생

libcrypto.lib(e_capi.obj) : error LNK2019: unresolved external symbol __imp_CertOpenStore referenced in function capi_list_certs
libcrypto.lib(e_capi.obj) : error LNK2019: unresolved external symbol __imp_CertCloseStore referenced in function capi_find_key
libcrypto.lib(e_capi.obj) : error LNK2019: unresolved external symbol __imp_CertEnumCertificatesInStore referenced in function capi_find_cert
libcrypto.lib(e_capi.obj) : error LNK2019: unresolved external symbol __imp_CertFindCertificateInStore referenced in function capi_find_cert
libcrypto.lib(e_capi.obj) : error LNK2019: unresolved external symbol __imp_CertDuplicateCertificateContext referenced in function capi_load_ssl_client_cert
libcrypto.lib(e_capi.obj) : error LNK2019: unresolved external symbol __imp_CertFreeCertificateContext referenced in function capi_dsa_free
libcrypto.lib(e_capi.obj) : error LNK2019: unresolved external symbol __imp_CertGetCertificateContextProperty referenced in function capi_cert_get_fname

crypt32.lib 를 link 하여 해결 da592e9d02205a4220debc78545467c68abec34b

로그인 기능도 문제없이 잘 실행됨.

alkee-allm commented 4 years ago

client 동작이 잘 이루어지면, README 에 새 UE4 project 에 적용하는 방법을 정리해주세요. (Unity client 구성 방법 참고)

ReU4752 commented 4 years ago

UE4 Editor 에서 첫 Login 성공 후 Stop 하고 Play 를 눌러서 다시 Login 시도 시 grpc::ClientContext 생성자에서 Exception 발생

지금은 GameInstance에서 Login이 호출 되어 성공 시 grpc::ClientContext::SetGlobalCallbacks 으로 g_client_callbacks 을 세팅해주는데, UE4 Editor 는 게임을 Stop 해도 Editor 의 프로세스가 종료가 안되서, 설정한 g_client_callbacks 가 Dangling Pointer 로 되어 게임 재시작 하여 Login 시도시 ClientContext 생성자에서 Exception 발생함.

g_client_callbacks->DefaultConstructor(this); // Exception thrown: read access violation

ClientContext 생성 전에 g_client_callbacks 을 다시 설정해주야할 듯

ReU4752 commented 4 years ago

Login 시도 시에 grpc::ClientContext::SetGlobalCallbacks 를 호출하여, 처음부터 설정되도록 했는데... g_client_callbacks 가 g_default_client_callbacks 로 설정 되어있을 때만 설정 가능해서 재시도 시 assert 에 걸림.

// client_context.cc
void ClientContext::SetGlobalCallbacks(GlobalCallbacks* client_callbacks) {
     GPR_ASSERT(g_client_callbacks == g_default_client_callbacks);

g_client_callbacks , g_default_client_callbacks 는 global static 변수 이고 Reset 함수가 따로 존재 하지 않은 것 같아 KritikaGameInstance 에서 초기화는 불가능해 보임.

ReU4752 commented 4 years ago

6b07661b4f4f2b073a1aebdd85801485311f2868 Auth 를 전역변수로 선언하여 GameInstance::Init 호출 시 무조건 한번만 설정하도록 수정

stub 을 만들 때 넘겨주는 channel 은 thread safe.

push thread 로 channel 을 그냥 넘겨줘도 문제 없을 듯.

그런데 push 이벤트로 jwt 토큰이 왔을 때 gRPCGlobalAuth.setJwt(Buffer.extra()); 가 thread safe 하지는 않을 것 같아보임...

ReU4752 commented 4 years ago

현재 첫 로그인 후 Stop 하고 Play 눌러 같은 계정으로 다시 로그인 시 크래쉬 발생 (다른 계정으로 로그인 시 발생 안함)

000001c9f116f910()  Unknown
UE4Editor-Core.dll!FRunnableThreadWin::Run() Line 89    C++
UE4Editor-Core.dll!FRunnableThreadWin::GuardedRun() Line 27 C++

FPushResponseThread::Run() 안 while 문을 주석 처리 하니 크래쉬 현상 없어짐. 허나 while 안 코드들만 주석 처리 시 같은 크래쉬 발생.

while (Stream->Read(&Buffer)) // Read 함수는 blocking 함수
{
     // empty...
}

while (Stream->Read(&Buffer)) 이 부분에서 문제가 발생하는 듯..

alkee-allm commented 4 years ago

현재 첫 로그인 후 Stop 하고 Play 눌러 같은 계정으로 다시 로그인 시 크래쉬 발생 (다른 계정으로 로그인 시 발생 안함)

이전 계정에서 사용하던 thread 는 올바르게 종료가 된 이후인가요?

ReU4752 commented 4 years ago

Thread 는 강제로 kill을 해도 Runnable 과 같이 정상 종료가 안되는 것 같네요

ReU4752 commented 4 years ago

현재 문제가 Shutdown 시 Thread Kill 을 요청해도, 끝날 때 까지 기다리지 않고 그냥 Thread Handle 만 닫고 있으므로 내부에서는 아직 계속 돌아가고 있음. 그 사이에 Runnable 이 삭제되고, 그리고 나서 남아있는 Thread 에서 Runnable->Run() 반환 후 Runnable->Exit 을 호출하면서 이미 삭제된 Runnable 를 참조하여 invalid 문제 발생

uint32 FRunnableThreadWin::Run()
{
    // Assume we'll fail init
    uint32 ExitCode = 1;
    check(Runnable);

    // Initialize the runnable object
    if (Runnable->Init() == true)
    {
        // Initialization has completed, release the sync event
        ThreadInitSyncEvent->Trigger();

        // Setup TLS for this thread, used by FTlsAutoCleanup objects.
        SetTls();

        // Now run the task that needs to be done
        ExitCode = Runnable->Run();
        // Allow any allocated resources to be cleaned up
        Runnable->Exit(); <- Invalid!

                // ...

결국 끝날 때 까지 기다리지 않고... 삭제 처리하는게 문제인 것 같다

ReU4752 commented 4 years ago

비동기 API 를 이용하여 PushThread 에서 처리해야 될 것 같다.

CompletionQueue::Next 는 blocking 이라서 Async 버전인 CompletionQueue::AsyncNext를 사용해보자

ReU4752 commented 4 years ago

현재 2번째 로그인 시 바로 "END OF PUSH service" 나는 이유는. 첫 PushThread 의 stream 이 제대로 안닫친 상태(Stream->Finish() 미호출 상태)시 같은 계정 접속할 때 서버에 오류 발생. 이때 첫 로그인 PushThread 와 두번째 로그인 시 생성된 PushThread의 Stream->Read() 가 0을 반환.

Play -> 1 PushThread Begin -> Stop -> Play -> 2 PushThread Begin -> 1,2 PushThread Read Fail -> 1,2 PushThread Finish

2번째 로그인 시 서버 fail 메세지

fail: Grpc.AspNetCore.Server.ServerCallHandler[6]
      Error when executing service method 'PushBegin'.
System.ArgumentException: An item with the same key has already been added. Key: k1
   at System.Collections.Generic.Dictionary`2.TryInsert(TKey key, TValue value, InsertionBehavior behavior)
   at System.Collections.Generic.Dictionary`2.Add(TKey key, TValue value)
   at K2svc.Frontend.PushService.PushStreamDb.Add(String userId, IServerStreamWriter`1 stream, ServerCallContext context, CancellationTokenSource streamCanceller) in D:\k2proto\K2svc\Frontend\PushService.cs:line 164
   at K2svc.Frontend.PushService.PushBegin(Null request, IServerStreamWriter`1 responseStream, ServerCallContext context) in D:\k2proto\K2svc\Frontend\PushService.cs:line 51
   at Grpc.Shared.Server.ServerStreamingServerMethodInvoker`3.ResolvedInterceptorInvoker(TRequest request, IServerStreamWriter`1 responseStream, ServerCallContext resolvedContext)
   at Grpc.Shared.Server.ServerStreamingServerMethodInvoker`3.ResolvedInterceptorInvoker(TRequest request, IServerStreamWriter`1 responseStream, ServerCallContext resolvedContext)
   at Grpc.Shared.Server.InterceptorPipelineBuilder`2.<>c__DisplayClass4_0.<<ServerStreamingPipeline>b__1>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at Grpc.Shared.Server.InterceptorPipelineBuilder`2.<>c__DisplayClass4_0.<<ServerStreamingPipeline>b__1>d.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at Grpc.Shared.Server.ServerStreamingServerMethodInvoker`3.Invoke(HttpContext httpContext, ServerCallContext serverCallContext, TRequest request, IServerStreamWriter`1 streamWriter)
   at Grpc.AspNetCore.Server.Internal.CallHandlers.ServerStreamingServerCallHandler`3.HandleCallAsyncCore(HttpContext httpContext, HttpContextServerCallContext serverCallContext)
   at Grpc.AspNetCore.Server.Internal.CallHandlers.ServerCallHandlerBase`3.<HandleCallAsync>g__AwaitHandleCall|8_0(HttpContextServerCallContext serverCallContext, Method`2 method, Task handleCall)
ReU4752 commented 4 years ago

d72c47c3eb76ad89374dce8bb78ce3fe25a10634 AsyncNext() 를 사용하여, 호출 시 1.5초 Deadline 을 설정. 스레드 종료를 주기로 체크해서 종료 시 무한정으로 block 안되도록 수정.

80ce7b84e8af88e5d7db588d92e70126840383f5 클라이언트에서 stream 강제 종료 시 grpc::ClientContext::TryCancel() 를 호출하여 취소.

Jake-S6 commented 3 years ago

abseil, upb, SSL, ... 라이브러리 링크 에러 발생

grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol OPENSSL_sk_num referenced in function "enum tsi_result __cdecl ssl_handshaker_result_extract_peer(struct tsi_handshaker_result const *,struct tsi_peer *)" (?ssl_handshaker_result_extract_peer@@YA?AW4tsi_result@@PEBUtsi_handshaker_result@@PEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol OPENSSL_sk_num referenced in function "enum tsi_result __cdecl ssl_handshaker_result_extract_peer(struct tsi_handshaker_result const *,struct tsi_peer *)" (?ssl_handshaker_result_extract_peer@@YA?AW4tsi_result@@PEBUtsi_handshaker_result@@PEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol OPENSSL_sk_value referenced in function "enum tsi_result __cdecl ssl_handshaker_result_extract_peer(struct tsi_handshaker_result const *,struct tsi_peer *)" (?ssl_handshaker_result_extract_peer@@YA?AW4tsi_result@@PEBUtsi_handshaker_result@@PEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol OPENSSL_sk_new_null referenced in function "enum tsi_result __cdecl x509_store_load_certs(struct x509_store_st *,char const *,unsigned __int64,struct stack_st_X509_NAME * *)" (?x509_store_load_certs@@YA?AW4tsi_result@@PEAUx509_store_st@@PEBD_KPEAPEAUstack_st_X509_NAME@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol OPENSSL_sk_pop_free referenced in function "enum tsi_result __cdecl peer_from_x509(struct x509_st *,int,struct tsi_peer *)" (?peer_from_x509@@YA?AW4tsi_result@@PEAUx509_st@@HPEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol OPENSSL_sk_push referenced in function "enum tsi_result __cdecl x509_store_load_certs(struct x509_store_st *,char const *,unsigned __int64,struct stack_st_X509_NAME * *)" (?x509_store_load_certs@@YA?AW4tsi_result@@PEAUx509_store_st@@PEBD_KPEAPEAUstack_st_X509_NAME@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol CRYPTO_get_ex_new_index referenced in function "void __cdecl init_openssl(void)" (?init_openssl@@YAXXZ)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol CRYPTO_free referenced in function "enum tsi_result __cdecl add_subject_alt_names_properties_to_peer(struct tsi_peer *,struct stack_st_GENERAL_NAME *,unsigned __int64)" (?add_subject_alt_names_properties_to_peer@@YA?AW4tsi_result@@PEAUtsi_peer@@PEAUstack_st_GENERAL_NAME@@_K@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol OPENSSL_init_crypto referenced in function "void __cdecl init_openssl(void)" (?init_openssl@@YAXXZ)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol BIO_test_flags referenced in function "enum tsi_result __cdecl ssl_handshaker_next(struct tsi_handshaker *,unsigned char const *,unsigned __int64,unsigned char const * *,unsigned __int64 *,struct tsi_handshaker_result * *,void (__cdecl*)(enum tsi_result,void *,unsigned char const *,unsigned __int64,struct tsi_handshaker_result *),void *)" (?ssl_handshaker_next@@YA?AW4tsi_result@@PEAUtsi_handshaker@@PEBE_KPEAPEBEPEA_KPEAPEAUtsi_handshaker_result@@P6AXW41@PEAX12PEAU3@@Z7@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol BIO_new referenced in function "enum tsi_result __cdecl ssl_handshaker_result_extract_peer(struct tsi_handshaker_result const *,struct tsi_peer *)" (?ssl_handshaker_result_extract_peer@@YA?AW4tsi_result@@PEBUtsi_handshaker_result@@PEAUtsi_peer@@@Z)
grpc.lib(json_token.cc.obj) : error LNK2001: unresolved external symbol BIO_new
grpc.lib(aes_gcm.cc.obj) : error LNK2001: unresolved external symbol BIO_new
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol BIO_free referenced in function "void __cdecl ssl_protector_destroy(struct tsi_frame_protector *)" (?ssl_protector_destroy@@YAXPEAUtsi_frame_protector@@@Z)
grpc.lib(json_token.cc.obj) : error LNK2001: unresolved external symbol BIO_free
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol BIO_read referenced in function "enum tsi_result __cdecl ssl_protector_protect(struct tsi_frame_protector *,unsigned char const *,unsigned __int64 *,unsigned char *,unsigned __int64 *)" (?ssl_protector_protect@@YA?AW4tsi_result@@PEAUtsi_frame_protector@@PEBEPEA_KPEAE2@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol BIO_write referenced in function "enum tsi_result __cdecl ssl_protector_unprotect(struct tsi_frame_protector *,unsigned char const *,unsigned __int64 *,unsigned char *,unsigned __int64 *)" (?ssl_protector_unprotect@@YA?AW4tsi_result@@PEAUtsi_frame_protector@@PEBEPEA_KPEAE2@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol BIO_ctrl referenced in function "enum tsi_result __cdecl ssl_protector_protect(struct tsi_frame_protector *,unsigned char const *,unsigned __int64 *,unsigned char *,unsigned __int64 *)" (?ssl_protector_protect@@YA?AW4tsi_result@@PEAUtsi_frame_protector@@PEBEPEA_KPEAE2@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2001: unresolved external symbol BIO_ctrl
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol BIO_s_mem referenced in function "enum tsi_result __cdecl ssl_handshaker_result_extract_peer(struct tsi_handshaker_result const *,struct tsi_peer *)" (?ssl_handshaker_result_extract_peer@@YA?AW4tsi_result@@PEBUtsi_handshaker_result@@PEAUtsi_peer@@@Z)
grpc.lib(json_token.cc.obj) : error LNK2001: unresolved external symbol BIO_s_mem
grpc.lib(aes_gcm.cc.obj) : error LNK2001: unresolved external symbol BIO_s_mem
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol BIO_new_mem_buf referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol BIO_new_bio_pair referenced in function "enum tsi_result __cdecl create_tsi_ssl_handshaker(struct ssl_ctx_st *,int,char const *,struct tsi_ssl_handshaker_factory *,struct tsi_handshaker * *)" (?create_tsi_ssl_handshaker@@YA?AW4tsi_result@@PEAUssl_ctx_st@@HPEBDPEAUtsi_ssl_handshaker_factory@@PEAPEAUtsi_handshaker@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol ASN1_STRING_to_UTF8 referenced in function "enum tsi_result __cdecl add_subject_alt_names_properties_to_peer(struct tsi_peer *,struct stack_st_GENERAL_NAME *,unsigned __int64)" (?add_subject_alt_names_properties_to_peer@@YA?AW4tsi_result@@PEAUtsi_peer@@PEAUstack_st_GENERAL_NAME@@_K@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol EVP_PKEY_free referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(json_token.cc.obj) : error LNK2001: unresolved external symbol EVP_PKEY_free
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol EC_KEY_new_by_curve_name referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol EC_KEY_free referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_STORE_new referenced in function "struct tsi_ssl_root_certs_store * __cdecl tsi_ssl_root_certs_store_create(char const *)" (?tsi_ssl_root_certs_store_create@@YAPEAUtsi_ssl_root_certs_store@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_STORE_free referenced in function "struct tsi_ssl_root_certs_store * __cdecl tsi_ssl_root_certs_store_create(char const *)" (?tsi_ssl_root_certs_store_create@@YAPEAUtsi_ssl_root_certs_store@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_STORE_up_ref referenced in function "enum tsi_result __cdecl tsi_create_ssl_client_handshaker_factory_with_options(struct tsi_ssl_client_handshaker_options const *,struct tsi_ssl_client_handshaker_factory * *)" (?tsi_create_ssl_client_handshaker_factory_with_options@@YA?AW4tsi_result@@PEBUtsi_ssl_client_handshaker_options@@PEAPEAUtsi_ssl_client_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_STORE_set_flags referenced in function "enum tsi_result __cdecl ssl_ctx_load_verification_certs(struct ssl_ctx_st *,char const *,unsigned __int64,struct stack_st_X509_NAME * *)" (?ssl_ctx_load_verification_certs@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBD_KPEAPEAUstack_st_X509_NAME@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_STORE_add_cert referenced in function "enum tsi_result __cdecl x509_store_load_certs(struct x509_store_st *,char const *,unsigned __int64,struct stack_st_X509_NAME * *)" (?x509_store_load_certs@@YA?AW4tsi_result@@PEAUx509_store_st@@PEBD_KPEAPEAUstack_st_X509_NAME@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_NAME_dup referenced in function "enum tsi_result __cdecl x509_store_load_certs(struct x509_store_st *,char const *,unsigned __int64,struct stack_st_X509_NAME * *)" (?x509_store_load_certs@@YA?AW4tsi_result@@PEAUx509_store_st@@PEBD_KPEAPEAUstack_st_X509_NAME@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_NAME_free referenced in function "enum tsi_result __cdecl x509_store_load_certs(struct x509_store_st *,char const *,unsigned __int64,struct stack_st_X509_NAME * *)" (?x509_store_load_certs@@YA?AW4tsi_result@@PEAUx509_store_st@@PEBD_KPEAPEAUstack_st_X509_NAME@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_free referenced in function "enum tsi_result __cdecl ssl_handshaker_result_extract_peer(struct tsi_handshaker_result const *,struct tsi_peer *)" (?ssl_handshaker_result_extract_peer@@YA?AW4tsi_result@@PEBUtsi_handshaker_result@@PEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_get_subject_name referenced in function "enum tsi_result __cdecl peer_from_x509(struct x509_st *,int,struct tsi_peer *)" (?peer_from_x509@@YA?AW4tsi_result@@PEAUx509_st@@HPEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_NAME_get_index_by_NID referenced in function "enum tsi_result __cdecl peer_from_x509(struct x509_st *,int,struct tsi_peer *)" (?peer_from_x509@@YA?AW4tsi_result@@PEAUx509_st@@HPEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_NAME_get_entry referenced in function "enum tsi_result __cdecl peer_from_x509(struct x509_st *,int,struct tsi_peer *)" (?peer_from_x509@@YA?AW4tsi_result@@PEAUx509_st@@HPEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_NAME_ENTRY_get_data referenced in function "enum tsi_result __cdecl peer_from_x509(struct x509_st *,int,struct tsi_peer *)" (?peer_from_x509@@YA?AW4tsi_result@@PEAUx509_st@@HPEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol X509_get_ext_d2i referenced in function "enum tsi_result __cdecl peer_from_x509(struct x509_st *,int,struct tsi_peer *)" (?peer_from_x509@@YA?AW4tsi_result@@PEAUx509_st@@HPEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol PEM_read_bio_X509 referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol PEM_write_bio_X509 referenced in function "enum tsi_result __cdecl ssl_handshaker_result_extract_peer(struct tsi_handshaker_result const *,struct tsi_peer *)" (?ssl_handshaker_result_extract_peer@@YA?AW4tsi_result@@PEBUtsi_handshaker_result@@PEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol PEM_read_bio_X509_AUX referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol PEM_read_bio_PrivateKey referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol ERR_get_error referenced in function "enum tsi_result __cdecl ssl_handshaker_next(struct tsi_handshaker *,unsigned char const *,unsigned __int64,unsigned char const * *,unsigned __int64 *,struct tsi_handshaker_result * *,void (__cdecl*)(enum tsi_result,void *,unsigned char const *,unsigned __int64,struct tsi_handshaker_result *),void *)" (?ssl_handshaker_next@@YA?AW4tsi_result@@PEAUtsi_handshaker@@PEBE_KPEAPEBEPEA_KPEAPEAUtsi_handshaker_result@@P6AXW41@PEAX12PEAU3@@Z7@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2001: unresolved external symbol ERR_get_error
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol ERR_clear_error referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol ERR_error_string_n referenced in function "enum tsi_result __cdecl ssl_handshaker_next(struct tsi_handshaker *,unsigned char const *,unsigned __int64,unsigned char const * *,unsigned __int64 *,struct tsi_handshaker_result * *,void (__cdecl*)(enum tsi_result,void *,unsigned char const *,unsigned __int64,struct tsi_handshaker_result *),void *)" (?ssl_handshaker_next@@YA?AW4tsi_result@@PEAUtsi_handshaker@@PEBE_KPEAPEBEPEA_KPEAPEAUtsi_handshaker_result@@P6AXW41@PEAX12PEAU3@@Z7@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol ENGINE_by_id referenced in function "enum tsi_result __cdecl ssl_ctx_use_engine_private_key(struct ssl_ctx_st *,char const *,unsigned __int64)" (?ssl_ctx_use_engine_private_key@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBD_K@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol ENGINE_ctrl_cmd_string referenced in function "enum tsi_result __cdecl ssl_ctx_use_engine_private_key(struct ssl_ctx_st *,char const *,unsigned __int64)" (?ssl_ctx_use_engine_private_key@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBD_K@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol ENGINE_free referenced in function "enum tsi_result __cdecl ssl_ctx_use_engine_private_key(struct ssl_ctx_st *,char const *,unsigned __int64)" (?ssl_ctx_use_engine_private_key@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBD_K@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol ENGINE_init referenced in function "enum tsi_result __cdecl ssl_ctx_use_engine_private_key(struct ssl_ctx_st *,char const *,unsigned __int64)" (?ssl_ctx_use_engine_private_key@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBD_K@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol ENGINE_load_private_key referenced in function "enum tsi_result __cdecl ssl_ctx_use_engine_private_key(struct ssl_ctx_st *,char const *,unsigned __int64)" (?ssl_ctx_use_engine_private_key@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBD_K@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol ENGINE_set_default referenced in function "enum tsi_result __cdecl ssl_ctx_use_engine_private_key(struct ssl_ctx_st *,char const *,unsigned __int64)" (?ssl_ctx_use_engine_private_key@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBD_K@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_set_options referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_sess_set_new_cb referenced in function "enum tsi_result __cdecl tsi_create_ssl_client_handshaker_factory_with_options(struct tsi_ssl_client_handshaker_options const *,struct tsi_ssl_client_handshaker_factory * *)" (?tsi_create_ssl_client_handshaker_factory_with_options@@YA?AW4tsi_result@@PEBUtsi_ssl_client_handshaker_options@@PEAPEAUtsi_ssl_client_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_set_next_protos_advertised_cb referenced in function "enum tsi_result __cdecl tsi_create_ssl_server_handshaker_factory_ex(struct tsi_ssl_pem_key_cert_pair const *,unsigned __int64,char const *,enum tsi_client_certificate_request_type,char const *,char const * *,unsigned short,struct tsi_ssl_server_handshaker_factory * *)" (?tsi_create_ssl_server_handshaker_factory_ex@@YA?AW4tsi_result@@PEBUtsi_ssl_pem_key_cert_pair@@_KPEBDW4tsi_client_certificate_request_type@@2PEAPEBDGPEAPEAUtsi_ssl_server_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_set_next_proto_select_cb referenced in function "enum tsi_result __cdecl tsi_create_ssl_client_handshaker_factory_with_options(struct tsi_ssl_client_handshaker_options const *,struct tsi_ssl_client_handshaker_factory * *)" (?tsi_create_ssl_client_handshaker_factory_with_options@@YA?AW4tsi_result@@PEBUtsi_ssl_client_handshaker_options@@PEAPEAUtsi_ssl_client_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_get0_next_proto_negotiated referenced in function "enum tsi_result __cdecl ssl_handshaker_result_extract_peer(struct tsi_handshaker_result const *,struct tsi_peer *)" (?ssl_handshaker_result_extract_peer@@YA?AW4tsi_result@@PEBUtsi_handshaker_result@@PEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_set_alpn_protos referenced in function "enum tsi_result __cdecl tsi_create_ssl_client_handshaker_factory_with_options(struct tsi_ssl_client_handshaker_options const *,struct tsi_ssl_client_handshaker_factory * *)" (?tsi_create_ssl_client_handshaker_factory_with_options@@YA?AW4tsi_result@@PEBUtsi_ssl_client_handshaker_options@@PEAPEAUtsi_ssl_client_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_set_alpn_select_cb referenced in function "enum tsi_result __cdecl tsi_create_ssl_server_handshaker_factory_ex(struct tsi_ssl_pem_key_cert_pair const *,unsigned __int64,char const *,enum tsi_client_certificate_request_type,char const *,char const * *,unsigned short,struct tsi_ssl_server_handshaker_factory * *)" (?tsi_create_ssl_server_handshaker_factory_ex@@YA?AW4tsi_result@@PEBUtsi_ssl_pem_key_cert_pair@@_KPEBDW4tsi_client_certificate_request_type@@2PEAPEBDGPEAPEAUtsi_ssl_server_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_get0_alpn_selected referenced in function "enum tsi_result __cdecl ssl_handshaker_result_extract_peer(struct tsi_handshaker_result const *,struct tsi_peer *)" (?ssl_handshaker_result_extract_peer@@YA?AW4tsi_result@@PEBUtsi_handshaker_result@@PEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_get_servername referenced in function "enum tsi_result __cdecl create_tsi_ssl_handshaker(struct ssl_ctx_st *,int,char const *,struct tsi_ssl_handshaker_factory *,struct tsi_handshaker * *)" (?create_tsi_ssl_handshaker@@YA?AW4tsi_result@@PEAUssl_ctx_st@@HPEBDPEAUtsi_ssl_handshaker_factory@@PEAPEAUtsi_handshaker@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_is_init_finished referenced in function "enum tsi_result __cdecl ssl_handshaker_next(struct tsi_handshaker *,unsigned char const *,unsigned __int64,unsigned char const * *,unsigned __int64 *,struct tsi_handshaker_result * *,void (__cdecl*)(enum tsi_result,void *,unsigned char const *,unsigned __int64,struct tsi_handshaker_result *),void *)" (?ssl_handshaker_next@@YA?AW4tsi_result@@PEAUtsi_handshaker@@PEBE_KPEAPEBEPEA_KPEAPEAUtsi_handshaker_result@@P6AXW41@PEAX12PEAU3@@Z7@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_set_cipher_list referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_new referenced in function "enum tsi_result __cdecl tsi_create_ssl_client_handshaker_factory_with_options(struct tsi_ssl_client_handshaker_options const *,struct tsi_ssl_client_handshaker_factory * *)" (?tsi_create_ssl_client_handshaker_factory_with_options@@YA?AW4tsi_result@@PEBUtsi_ssl_client_handshaker_options@@PEAPEAUtsi_ssl_client_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_free referenced in function "void __cdecl tsi_ssl_client_handshaker_factory_destroy(struct tsi_ssl_handshaker_factory *)" (?tsi_ssl_client_handshaker_factory_destroy@@YAXPEAUtsi_ssl_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_get_cert_store referenced in function "enum tsi_result __cdecl ssl_ctx_load_verification_certs(struct ssl_ctx_st *,char const *,unsigned __int64,struct stack_st_X509_NAME * *)" (?ssl_ctx_load_verification_certs@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBD_KPEAPEAUstack_st_X509_NAME@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_set_cert_store referenced in function "enum tsi_result __cdecl tsi_create_ssl_client_handshaker_factory_with_options(struct tsi_ssl_client_handshaker_options const *,struct tsi_ssl_client_handshaker_factory * *)" (?tsi_create_ssl_client_handshaker_factory_with_options@@YA?AW4tsi_result@@PEBUtsi_ssl_client_handshaker_options@@PEAPEAUtsi_ssl_client_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_set_bio referenced in function "enum tsi_result __cdecl create_tsi_ssl_handshaker(struct ssl_ctx_st *,int,char const *,struct tsi_ssl_handshaker_factory *,struct tsi_handshaker * *)" (?create_tsi_ssl_handshaker@@YA?AW4tsi_result@@PEAUssl_ctx_st@@HPEBDPEAUtsi_ssl_handshaker_factory@@PEAPEAUtsi_handshaker@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_state_string referenced in function "void __cdecl ssl_info_callback(struct ssl_st const *,int,int)" (?ssl_info_callback@@YAXPEBUssl_st@@HH@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_state_string_long referenced in function "void __cdecl ssl_info_callback(struct ssl_st const *,int,int)" (?ssl_info_callback@@YAXPEBUssl_st@@HH@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_SESSION_free referenced in function "public: __cdecl std::unique_ptr<struct ssl_session_st,struct tsi::SslSessionDeleter>::~unique_ptr<struct ssl_session_st,struct tsi::SslSessionDeleter>(void)" (??1?$unique_ptr@Ussl_session_st@@USslSessionDeleter@tsi@@@std@@QEAA@XZ)
grpc.lib(ssl_session_cache.cc.obj) : error LNK2001: unresolved external symbol SSL_SESSION_free
grpc.lib(ssl_session_openssl.cc.obj) : error LNK2001: unresolved external symbol SSL_SESSION_free
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_set_session referenced in function "enum tsi_result __cdecl create_tsi_ssl_handshaker(struct ssl_ctx_st *,int,char const *,struct tsi_ssl_handshaker_factory *,struct tsi_handshaker * *)" (?create_tsi_ssl_handshaker@@YA?AW4tsi_result@@PEAUssl_ctx_st@@HPEBDPEAUtsi_ssl_handshaker_factory@@PEAPEAUtsi_handshaker@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_get_peer_certificate referenced in function "enum tsi_result __cdecl ssl_handshaker_result_extract_peer(struct tsi_handshaker_result const *,struct tsi_peer *)" (?ssl_handshaker_result_extract_peer@@YA?AW4tsi_result@@PEBUtsi_handshaker_result@@PEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_get_peer_cert_chain referenced in function "enum tsi_result __cdecl ssl_handshaker_result_extract_peer(struct tsi_handshaker_result const *,struct tsi_peer *)" (?ssl_handshaker_result_extract_peer@@YA?AW4tsi_result@@PEBUtsi_handshaker_result@@PEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_set_verify referenced in function "enum tsi_result __cdecl tsi_create_ssl_client_handshaker_factory_with_options(struct tsi_ssl_client_handshaker_options const *,struct tsi_ssl_client_handshaker_factory * *)" (?tsi_create_ssl_client_handshaker_factory_with_options@@YA?AW4tsi_result@@PEBUtsi_ssl_client_handshaker_options@@PEAPEAUtsi_ssl_client_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_use_PrivateKey referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_use_certificate referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_check_private_key referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_set_session_id_context referenced in function "enum tsi_result __cdecl tsi_create_ssl_server_handshaker_factory_ex(struct tsi_ssl_pem_key_cert_pair const *,unsigned __int64,char const *,enum tsi_client_certificate_request_type,char const *,char const * *,unsigned short,struct tsi_ssl_server_handshaker_factory * *)" (?tsi_create_ssl_server_handshaker_factory_ex@@YA?AW4tsi_result@@PEBUtsi_ssl_pem_key_cert_pair@@_KPEBDW4tsi_client_certificate_request_type@@2PEAPEBDGPEAPEAUtsi_ssl_server_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_new referenced in function "enum tsi_result __cdecl create_tsi_ssl_handshaker(struct ssl_ctx_st *,int,char const *,struct tsi_ssl_handshaker_factory *,struct tsi_handshaker * *)" (?create_tsi_ssl_handshaker@@YA?AW4tsi_result@@PEAUssl_ctx_st@@HPEBDPEAUtsi_ssl_handshaker_factory@@PEAPEAUtsi_handshaker@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_free referenced in function "void __cdecl ssl_protector_destroy(struct tsi_frame_protector *)" (?ssl_protector_destroy@@YAXPEAUtsi_frame_protector@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_read referenced in function "enum tsi_result __cdecl do_ssl_read(struct ssl_st *,unsigned char *,unsigned __int64 *)" (?do_ssl_read@@YA?AW4tsi_result@@PEAUssl_st@@PEAEPEA_K@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_write referenced in function "enum tsi_result __cdecl do_ssl_write(struct ssl_st *,unsigned char *,unsigned __int64)" (?do_ssl_write@@YA?AW4tsi_result@@PEAUssl_st@@PEAE_K@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_ctrl referenced in function "enum tsi_result __cdecl create_tsi_ssl_handshaker(struct ssl_ctx_st *,int,char const *,struct tsi_ssl_handshaker_factory *,struct tsi_handshaker * *)" (?create_tsi_ssl_handshaker@@YA?AW4tsi_result@@PEAUssl_ctx_st@@HPEBDPEAUtsi_ssl_handshaker_factory@@PEAPEAUtsi_handshaker@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_ctrl referenced in function "enum tsi_result __cdecl populate_ssl_context(struct ssl_ctx_st *,struct tsi_ssl_pem_key_cert_pair const *,char const *)" (?populate_ssl_context@@YA?AW4tsi_result@@PEAUssl_ctx_st@@PEBUtsi_ssl_pem_key_cert_pair@@PEBD@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_callback_ctrl referenced in function "enum tsi_result __cdecl tsi_create_ssl_server_handshaker_factory_ex(struct tsi_ssl_pem_key_cert_pair const *,unsigned __int64,char const *,enum tsi_client_certificate_request_type,char const *,char const * *,unsigned short,struct tsi_ssl_server_handshaker_factory * *)" (?tsi_create_ssl_server_handshaker_factory_ex@@YA?AW4tsi_result@@PEBUtsi_ssl_pem_key_cert_pair@@_KPEBDW4tsi_client_certificate_request_type@@2PEAPEBDGPEAPEAUtsi_ssl_server_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_get_error referenced in function "enum tsi_result __cdecl ssl_handshaker_next(struct tsi_handshaker *,unsigned char const *,unsigned __int64,unsigned char const * *,unsigned __int64 *,struct tsi_handshaker_result * *,void (__cdecl*)(enum tsi_result,void *,unsigned char const *,unsigned __int64,struct tsi_handshaker_result *),void *)" (?ssl_handshaker_next@@YA?AW4tsi_result@@PEAUtsi_handshaker@@PEBE_KPEAPEBEPEA_KPEAPEAUtsi_handshaker_result@@P6AXW41@PEAX12PEAU3@@Z7@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol TLSv1_2_method referenced in function "enum tsi_result __cdecl tsi_create_ssl_client_handshaker_factory_with_options(struct tsi_ssl_client_handshaker_options const *,struct tsi_ssl_client_handshaker_factory * *)" (?tsi_create_ssl_client_handshaker_factory_with_options@@YA?AW4tsi_result@@PEBUtsi_ssl_client_handshaker_options@@PEAPEAUtsi_ssl_client_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_do_handshake referenced in function "enum tsi_result __cdecl ssl_handshaker_next(struct tsi_handshaker *,unsigned char const *,unsigned __int64,unsigned char const * *,unsigned __int64 *,struct tsi_handshaker_result * *,void (__cdecl*)(enum tsi_result,void *,unsigned char const *,unsigned __int64,struct tsi_handshaker_result *),void *)" (?ssl_handshaker_next@@YA?AW4tsi_result@@PEAUtsi_handshaker@@PEBE_KPEAPEBEPEA_KPEAPEAUtsi_handshaker_result@@P6AXW41@PEAX12PEAU3@@Z7@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_set_client_CA_list referenced in function "enum tsi_result __cdecl tsi_create_ssl_server_handshaker_factory_ex(struct tsi_ssl_pem_key_cert_pair const *,unsigned __int64,char const *,enum tsi_client_certificate_request_type,char const *,char const * *,unsigned short,struct tsi_ssl_server_handshaker_factory * *)" (?tsi_create_ssl_server_handshaker_factory_ex@@YA?AW4tsi_result@@PEBUtsi_ssl_pem_key_cert_pair@@_KPEBDW4tsi_client_certificate_request_type@@2PEAPEBDGPEAPEAUtsi_ssl_server_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_set_connect_state referenced in function "enum tsi_result __cdecl create_tsi_ssl_handshaker(struct ssl_ctx_st *,int,char const *,struct tsi_ssl_handshaker_factory *,struct tsi_handshaker * *)" (?create_tsi_ssl_handshaker@@YA?AW4tsi_result@@PEAUssl_ctx_st@@HPEBDPEAUtsi_ssl_handshaker_factory@@PEAPEAUtsi_handshaker@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_set_accept_state referenced in function "enum tsi_result __cdecl create_tsi_ssl_handshaker(struct ssl_ctx_st *,int,char const *,struct tsi_ssl_handshaker_factory *,struct tsi_handshaker * *)" (?create_tsi_ssl_handshaker@@YA?AW4tsi_result@@PEAUssl_ctx_st@@HPEBDPEAUtsi_ssl_handshaker_factory@@PEAPEAUtsi_handshaker@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_get_SSL_CTX referenced in function "int __cdecl server_handshaker_factory_new_session_callback(struct ssl_st *,struct ssl_session_st *)" (?server_handshaker_factory_new_session_callback@@YAHPEAUssl_st@@PEAUssl_session_st@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_set_SSL_CTX referenced in function "int __cdecl ssl_server_handshaker_factory_servername_callback(struct ssl_st *,int *,void *)" (?ssl_server_handshaker_factory_servername_callback@@YAHPEAUssl_st@@PEAHPEAX@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_set_info_callback referenced in function "enum tsi_result __cdecl create_tsi_ssl_handshaker(struct ssl_ctx_st *,int,char const *,struct tsi_ssl_handshaker_factory *,struct tsi_handshaker * *)" (?create_tsi_ssl_handshaker@@YA?AW4tsi_result@@PEAUssl_ctx_st@@HPEBDPEAUtsi_ssl_handshaker_factory@@PEAPEAUtsi_handshaker@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_set_ex_data referenced in function "enum tsi_result __cdecl tsi_create_ssl_client_handshaker_factory_with_options(struct tsi_ssl_client_handshaker_options const *,struct tsi_ssl_client_handshaker_factory * *)" (?tsi_create_ssl_client_handshaker_factory_with_options@@YA?AW4tsi_result@@PEBUtsi_ssl_client_handshaker_options@@PEAPEAUtsi_ssl_client_handshaker_factory@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_CTX_get_ex_data referenced in function "int __cdecl server_handshaker_factory_new_session_callback(struct ssl_st *,struct ssl_session_st *)" (?server_handshaker_factory_new_session_callback@@YAHPEAUssl_st@@PEAUssl_session_st@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol SSL_session_reused referenced in function "enum tsi_result __cdecl ssl_handshaker_result_extract_peer(struct tsi_handshaker_result const *,struct tsi_peer *)" (?ssl_handshaker_result_extract_peer@@YA?AW4tsi_result@@PEBUtsi_handshaker_result@@PEAUtsi_peer@@@Z)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol OPENSSL_init_ssl referenced in function "void __cdecl init_openssl(void)" (?init_openssl@@YAXXZ)
grpc.lib(ssl_transport_security.cc.obj) : error LNK2019: unresolved external symbol GENERAL_NAME_free referenced in function "enum tsi_result __cdecl peer_from_x509(struct x509_st *,int,struct tsi_peer *)" (?peer_from_x509@@YA?AW4tsi_result@@PEAUx509_st@@HPEAUtsi_peer@@@Z)
grpc.lib(message_compress.cc.obj) : error LNK2019: unresolved external symbol deflate referenced in function "int __cdecl zlib_compress(struct grpc_slice_buffer *,struct grpc_slice_buffer *,int)" (?zlib_compress@@YAHPEAUgrpc_slice_buffer@@0H@Z)
grpc.lib(stream_compression_gzip.cc.obj) : error LNK2001: unresolved external symbol deflate
grpc.lib(message_compress.cc.obj) : error LNK2019: unresolved external symbol deflateEnd referenced in function "int __cdecl zlib_compress(struct grpc_slice_buffer *,struct grpc_slice_buffer *,int)" (?zlib_compress@@YAHPEAUgrpc_slice_buffer@@0H@Z)
grpc.lib(stream_compression_gzip.cc.obj) : error LNK2001: unresolved external symbol deflateEnd
grpc.lib(message_compress.cc.obj) : error LNK2019: unresolved external symbol inflate referenced in function "int __cdecl zlib_decompress(struct grpc_slice_buffer *,struct grpc_slice_buffer *,int)" (?zlib_decompress@@YAHPEAUgrpc_slice_buffer@@0H@Z)
grpc.lib(stream_compression_gzip.cc.obj) : error LNK2001: unresolved external symbol inflate
grpc.lib(message_compress.cc.obj) : error LNK2019: unresolved external symbol inflateEnd referenced in function "int __cdecl zlib_decompress(struct grpc_slice_buffer *,struct grpc_slice_buffer *,int)" (?zlib_decompress@@YAHPEAUgrpc_slice_buffer@@0H@Z)
grpc.lib(stream_compression_gzip.cc.obj) : error LNK2001: unresolved external symbol inflateEnd
grpc.lib(message_compress.cc.obj) : error LNK2019: unresolved external symbol deflateInit2_ referenced in function "int __cdecl zlib_compress(struct grpc_slice_buffer *,struct grpc_slice_buffer *,int)" (?zlib_compress@@YAHPEAUgrpc_slice_buffer@@0H@Z)
grpc.lib(stream_compression_gzip.cc.obj) : error LNK2001: unresolved external symbol deflateInit2_
grpc.lib(message_compress.cc.obj) : error LNK2019: unresolved external symbol inflateInit2_ referenced in function "int __cdecl zlib_decompress(struct grpc_slice_buffer *,struct grpc_slice_buffer *,int)" (?zlib_decompress@@YAHPEAUgrpc_slice_buffer@@0H@Z)
grpc.lib(stream_compression_gzip.cc.obj) : error LNK2001: unresolved external symbol inflateInit2_
grpc.lib(ssl_session_openssl.cc.obj) : error LNK2019: unresolved external symbol i2d_SSL_SESSION referenced in function "class std::unique_ptr<class tsi::`anonymous namespace'::OpenSslCachedSession,struct std::default_delete<class tsi::`anonymous namespace'::OpenSslCachedSession> > __cdecl std::make_unique<class tsi::`anonymous namespace'::OpenSslCachedSession,class std::unique_ptr<struct ssl_session_st,struct tsi::SslSessionDeleter>,0>(class std::unique_ptr<struct ssl_session_st,struct tsi::SslSessionDeleter> &&)" (??$make_unique@VOpenSslCachedSession@?A0xafaf4fbc@tsi@@V?$unique_ptr@Ussl_session_st@@USslSessionDeleter@tsi@@@std@@$0A@@std@@YA?AV?$unique_ptr@VOpenSslCachedSession@?A0xafaf4fbc@tsi@@U?$default_delete@VOpenSslCachedSession@?A0xafaf4fbc@tsi@@@std@@@0@$$QEAV?$unique_ptr@Ussl_session_st@@USslSessionDeleter@tsi@@@0@@Z)
grpc.lib(ssl_session_openssl.cc.obj) : error LNK2019: unresolved external symbol d2i_SSL_SESSION referenced in function "public: virtual class std::unique_ptr<struct ssl_session_st,struct tsi::SslSessionDeleter> __cdecl tsi::`anonymous namespace'::OpenSslCachedSession::CopySession(void)const " (?CopySession@OpenSslCachedSession@?A0xafaf4fbc@tsi@@UEBA?AV?$unique_ptr@Ussl_session_st@@USslSessionDeleter@tsi@@@std@@XZ)
grpc.lib(json_token.cc.obj) : error LNK2019: unresolved external symbol BIO_puts referenced in function "struct grpc_auth_json_key __cdecl grpc_auth_json_key_create_from_json(class grpc_core::Json const &)" (?grpc_auth_json_key_create_from_json@@YA?AUgrpc_auth_json_key@@AEBVJson@grpc_core@@@Z)
grpc.lib(json_token.cc.obj) : error LNK2019: unresolved external symbol RSA_free referenced in function "struct grpc_auth_json_key __cdecl grpc_auth_json_key_create_from_json(class grpc_core::Json const &)" (?grpc_auth_json_key_create_from_json@@YA?AUgrpc_auth_json_key@@AEBVJson@grpc_core@@@Z)
grpc.lib(json_token.cc.obj) : error LNK2019: unresolved external symbol EVP_MD_CTX_new referenced in function "char * __cdecl compute_and_encode_signature(struct grpc_auth_json_key const *,char const *,char const *)" (?compute_and_encode_signature@@YAPEADPEBUgrpc_auth_json_key@@PEBD1@Z)
grpc.lib(json_token.cc.obj) : error LNK2019: unresolved external symbol EVP_MD_CTX_free referenced in function "char * __cdecl compute_and_encode_signature(struct grpc_auth_json_key const *,char const *,char const *)" (?compute_and_encode_signature@@YAPEADPEBUgrpc_auth_json_key@@PEBD1@Z)
grpc.lib(json_token.cc.obj) : error LNK2019: unresolved external symbol EVP_DigestUpdate referenced in function "char * __cdecl compute_and_encode_signature(struct grpc_auth_json_key const *,char const *,char const *)" (?compute_and_encode_signature@@YAPEADPEBUgrpc_auth_json_key@@PEBD1@Z)
grpc.lib(json_token.cc.obj) : error LNK2019: unresolved external symbol EVP_DigestSignInit referenced in function "char * __cdecl compute_and_encode_signature(struct grpc_auth_json_key const *,char const *,char const *)" (?compute_and_encode_signature@@YAPEADPEBUgrpc_auth_json_key@@PEBD1@Z)
grpc.lib(json_token.cc.obj) : error LNK2019: unresolved external symbol EVP_DigestSignFinal referenced in function "char * __cdecl compute_and_encode_signature(struct grpc_auth_json_key const *,char const *,char const *)" (?compute_and_encode_signature@@YAPEADPEBUgrpc_auth_json_key@@PEBD1@Z)
grpc.lib(json_token.cc.obj) : error LNK2019: unresolved external symbol EVP_sha256 referenced in function "char * __cdecl compute_and_encode_signature(struct grpc_auth_json_key const *,char const *,char const *)" (?compute_and_encode_signature@@YAPEADPEBUgrpc_auth_json_key@@PEBD1@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2001: unresolved external symbol EVP_sha256
grpc.lib(json_token.cc.obj) : error LNK2019: unresolved external symbol EVP_PKEY_set1_RSA referenced in function "char * __cdecl compute_and_encode_signature(struct grpc_auth_json_key const *,char const *,char const *)" (?compute_and_encode_signature@@YAPEADPEBUgrpc_auth_json_key@@PEBD1@Z)
grpc.lib(json_token.cc.obj) : error LNK2019: unresolved external symbol EVP_PKEY_new referenced in function "char * __cdecl compute_and_encode_signature(struct grpc_auth_json_key const *,char const *,char const *)" (?compute_and_encode_signature@@YAPEADPEBUgrpc_auth_json_key@@PEBD1@Z)
grpc.lib(json_token.cc.obj) : error LNK2019: unresolved external symbol PEM_read_bio_RSAPrivateKey referenced in function "struct grpc_auth_json_key __cdecl grpc_auth_json_key_create_from_json(class grpc_core::Json const &)" (?grpc_auth_json_key_create_from_json@@YA?AUgrpc_auth_json_key@@AEBVJson@grpc_core@@@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol BIO_free_all referenced in function "enum grpc_status_code __cdecl gsec_aes_gcm_aead_crypter_encrypt_iovec(struct gsec_aead_crypter *,unsigned char const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec,unsigned __int64 *,char * *)" (?gsec_aes_gcm_aead_crypter_encrypt_iovec@@YA?AW4grpc_status_code@@PEAUgsec_aead_crypter@@PEBE_KPEBUiovec@@232U3@PEA_KPEAPEAD@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol ERR_print_errors referenced in function "enum grpc_status_code __cdecl gsec_aes_gcm_aead_crypter_encrypt_iovec(struct gsec_aead_crypter *,unsigned char const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec,unsigned __int64 *,char * *)" (?gsec_aes_gcm_aead_crypter_encrypt_iovec@@YA?AW4grpc_status_code@@PEAUgsec_aead_crypter@@PEBE_KPEBUiovec@@232U3@PEA_KPEAPEAD@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol EVP_EncryptInit_ex referenced in function "enum grpc_status_code __cdecl gsec_aes_gcm_aead_crypter_encrypt_iovec(struct gsec_aead_crypter *,unsigned char const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec,unsigned __int64 *,char * *)" (?gsec_aes_gcm_aead_crypter_encrypt_iovec@@YA?AW4grpc_status_code@@PEAUgsec_aead_crypter@@PEBE_KPEBUiovec@@232U3@PEA_KPEAPEAD@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol EVP_EncryptUpdate referenced in function "enum grpc_status_code __cdecl gsec_aes_gcm_aead_crypter_encrypt_iovec(struct gsec_aead_crypter *,unsigned char const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec,unsigned __int64 *,char * *)" (?gsec_aes_gcm_aead_crypter_encrypt_iovec@@YA?AW4grpc_status_code@@PEAUgsec_aead_crypter@@PEBE_KPEBUiovec@@232U3@PEA_KPEAPEAD@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol EVP_EncryptFinal_ex referenced in function "enum grpc_status_code __cdecl gsec_aes_gcm_aead_crypter_encrypt_iovec(struct gsec_aead_crypter *,unsigned char const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec,unsigned __int64 *,char * *)" (?gsec_aes_gcm_aead_crypter_encrypt_iovec@@YA?AW4grpc_status_code@@PEAUgsec_aead_crypter@@PEBE_KPEBUiovec@@232U3@PEA_KPEAPEAD@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol EVP_DecryptInit_ex referenced in function "enum grpc_status_code __cdecl gsec_aes_gcm_aead_crypter_decrypt_iovec(struct gsec_aead_crypter *,unsigned char const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec,unsigned __int64 *,char * *)" (?gsec_aes_gcm_aead_crypter_decrypt_iovec@@YA?AW4grpc_status_code@@PEAUgsec_aead_crypter@@PEBE_KPEBUiovec@@232U3@PEA_KPEAPEAD@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol EVP_DecryptUpdate referenced in function "enum grpc_status_code __cdecl gsec_aes_gcm_aead_crypter_decrypt_iovec(struct gsec_aead_crypter *,unsigned char const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec,unsigned __int64 *,char * *)" (?gsec_aes_gcm_aead_crypter_decrypt_iovec@@YA?AW4grpc_status_code@@PEAUgsec_aead_crypter@@PEBE_KPEBUiovec@@232U3@PEA_KPEAPEAD@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol EVP_DecryptFinal_ex referenced in function "enum grpc_status_code __cdecl gsec_aes_gcm_aead_crypter_decrypt_iovec(struct gsec_aead_crypter *,unsigned char const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec,unsigned __int64 *,char * *)" (?gsec_aes_gcm_aead_crypter_decrypt_iovec@@YA?AW4grpc_status_code@@PEAUgsec_aead_crypter@@PEBE_KPEBUiovec@@232U3@PEA_KPEAPEAD@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol EVP_CIPHER_CTX_new referenced in function "enum grpc_status_code __cdecl gsec_aes_gcm_aead_crypter_create(unsigned char const *,unsigned __int64,unsigned __int64,unsigned __int64,bool,struct gsec_aead_crypter * *,char * *)" (?gsec_aes_gcm_aead_crypter_create@@YA?AW4grpc_status_code@@PEBE_K11_NPEAPEAUgsec_aead_crypter@@PEAPEAD@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol EVP_CIPHER_CTX_free referenced in function "void __cdecl gsec_aes_gcm_aead_crypter_destroy(struct gsec_aead_crypter *)" (?gsec_aes_gcm_aead_crypter_destroy@@YAXPEAUgsec_aead_crypter@@@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol EVP_CIPHER_CTX_ctrl referenced in function "enum grpc_status_code __cdecl gsec_aes_gcm_aead_crypter_encrypt_iovec(struct gsec_aead_crypter *,unsigned char const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec const *,unsigned __int64,struct iovec,unsigned __int64 *,char * *)" (?gsec_aes_gcm_aead_crypter_encrypt_iovec@@YA?AW4grpc_status_code@@PEAUgsec_aead_crypter@@PEBE_KPEBUiovec@@232U3@PEA_KPEAPEAD@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol EVP_aes_128_gcm referenced in function "enum grpc_status_code __cdecl aes_gcm_new_evp_cipher_ctx(struct gsec_aes_gcm_aead_crypter *,char * *)" (?aes_gcm_new_evp_cipher_ctx@@YA?AW4grpc_status_code@@PEAUgsec_aes_gcm_aead_crypter@@PEAPEAD@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol EVP_aes_256_gcm referenced in function "enum grpc_status_code __cdecl aes_gcm_new_evp_cipher_ctx(struct gsec_aes_gcm_aead_crypter *,char * *)" (?aes_gcm_new_evp_cipher_ctx@@YA?AW4grpc_status_code@@PEAUgsec_aes_gcm_aead_crypter@@PEAPEAD@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol HMAC_CTX_new referenced in function "enum grpc_status_code __cdecl aes_gcm_derive_aead_key(unsigned char *,unsigned char const *,unsigned char const *)" (?aes_gcm_derive_aead_key@@YA?AW4grpc_status_code@@PEAEPEBE1@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol HMAC_CTX_free referenced in function "enum grpc_status_code __cdecl aes_gcm_derive_aead_key(unsigned char *,unsigned char const *,unsigned char const *)" (?aes_gcm_derive_aead_key@@YA?AW4grpc_status_code@@PEAEPEBE1@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol HMAC_Init_ex referenced in function "enum grpc_status_code __cdecl aes_gcm_derive_aead_key(unsigned char *,unsigned char const *,unsigned char const *)" (?aes_gcm_derive_aead_key@@YA?AW4grpc_status_code@@PEAEPEBE1@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol HMAC_Update referenced in function "enum grpc_status_code __cdecl aes_gcm_derive_aead_key(unsigned char *,unsigned char const *,unsigned char const *)" (?aes_gcm_derive_aead_key@@YA?AW4grpc_status_code@@PEAEPEBE1@Z)
grpc.lib(aes_gcm.cc.obj) : error LNK2019: unresolved external symbol HMAC_Final referenced in function "enum grpc_status_code __cdecl aes_gcm_derive_aead_key(unsigned char *,unsigned char const *,unsigned char const *)" (?aes_gcm_derive_aead_key@@YA?AW4grpc_status_code@@PEAEPEBE1@Z)

해당 라이브러리들 추가 필요

How did you fix this issue? I am seeing something similar when trying to integrate grpc in UE

alkee-allm commented 3 years ago

@Jake-S6 We solved that problem by using same version of SSL library as grpc with vcpkg instead of UE's.

omrumcetin commented 1 year ago

@alkee-allm I have tried to read korean with google translate as much as possible, but how u managed to exclude Unreal Engine's open ssl ?