Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GRPC client 적용 Unreal project 추가 #26

Open
alkee-allm opened this issue Aug 21, 2020 · 47 comments
Open

GRPC client 적용 Unreal project 추가 #26

alkee-allm opened this issue Aug 21, 2020 · 47 comments
Assignees
Labels
task normal task URGENT high priority WORKING

Comments

@alkee-allm
Copy link
Owner

alkee-allm commented Aug 21, 2020

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

  • UE4 project 의 크기(용량) 최소화 유지 - 버전관리
  • .gitignore 알맞게 추가 또는 수정
  • 비동기 방식(비동기 방식의 c++ client gRPC #1) 또는 별도 threading 을 이용해, rendering 을 멈추지 않고 RPC 를 사용할 수 있도록 ; 요청(request)시 loading 표시 및 응답(response)시 loading 해제.
  • server(dedicated server) 및 client code 코드 양쪽에서 사용 가능하도록 구성되어야 할 것.
@ReU4752 ReU4752 self-assigned this Aug 21, 2020
@alkee-allm alkee-allm changed the title GRPC 적용 Unreal project 추가 GRPC client 적용 Unreal project 추가 Aug 28, 2020
@alkee-allm alkee-allm added task normal task URGENT high priority labels Aug 30, 2020
@ReU4752 ReU4752 added the WORKING label Sep 7, 2020
@ReU4752
Copy link
Collaborator

ReU4752 commented Sep 7, 2020

@alkee-allm
Copy link
Owner Author

Reference

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

  1. build grpc with -DgRPC_USE_PROTO_LITE=ON flag.
  • GRPC_USE_PROTO_LITE 를 사용하는 이유가 불명확하고
  1. 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
Copy link
Collaborator

ReU4752 commented Sep 9, 2020

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

Reference

0cc1e50
PublicAdditionalLibraries, PublicIncludePaths 에 path 추가하여, *.lib 경로와 include 경로를 등록

@ReU4752
Copy link
Collaborator

ReU4752 commented Sep 9, 2020

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

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

@ReU4752
Copy link
Collaborator

ReU4752 commented Sep 9, 2020

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

@alkee-allm
Copy link
Owner Author

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

@ReU4752
Copy link
Collaborator

ReU4752 commented Sep 9, 2020

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

ReU4752 added a commit that referenced this issue Sep 9, 2020
@ReU4752
Copy link
Collaborator

ReU4752 commented Sep 9, 2020

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

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

@ReU4752
Copy link
Collaborator

ReU4752 commented Sep 10, 2020

6719cff

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

@ReU4752
Copy link
Collaborator

ReU4752 commented Sep 10, 2020

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

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

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

@alkee-allm
Copy link
Owner Author

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

참고 : Dynamic-Link Library Search Order

@ReU4752
Copy link
Collaborator

ReU4752 commented Sep 10, 2020

224dc2c

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

@ReU4752
Copy link
Collaborator

ReU4752 commented Sep 10, 2020

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

@ReU4752
Copy link
Collaborator

ReU4752 commented Sep 10, 2020

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

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

ReU4752 added a commit that referenced this issue Sep 10, 2020
@ReU4752
Copy link
Collaborator

ReU4752 commented Sep 11, 2020

9e79075

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
Copy link
Owner Author

alkee-allm commented Sep 11, 2020

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
Copy link
Owner Author

alkee-allm commented Sep 13, 2020

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

@alkee-allm
Copy link
Owner Author

alkee-allm commented Sep 14, 2020

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

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

@ReU4752
Copy link
Collaborator

ReU4752 commented Sep 15, 2020

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

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

Process ProtocProcess = Process.Start(...);
ProtocProcess.WaitForExit();

@ReU4752
Copy link
Collaborator

ReU4752 commented Sep 15, 2020

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

@ReU4752
Copy link
Collaborator

ReU4752 commented Sep 15, 2020

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
Copy link
Owner Author

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

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

@ReU4752
Copy link
Collaborator

ReU4752 commented Sep 15, 2020

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

9e79075

AddEngineThirdPartyPrivateStaticDependencies(Target, "OpenSSL");

@ReU4752
Copy link
Collaborator

ReU4752 commented Sep 15, 2020

ed73da0
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
Copy link
Collaborator

ReU4752 commented Sep 15, 2020

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

@ReU4752
Copy link
Collaborator

ReU4752 commented Sep 16, 2020

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
Copy link
Owner Author

오류 기록시에는 굳이 전체 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
Copy link
Collaborator

ReU4752 commented Sep 16, 2020

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
Copy link
Collaborator

ReU4752 commented Sep 17, 2020

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

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

@alkee-allm
Copy link
Owner Author

alkee-allm commented Sep 17, 2020

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

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

@ReU4752
Copy link
Collaborator

ReU4752 commented Sep 17, 2020

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

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

-DgRPC_MSVC_STATIC_RUNTIME=$(gRPC_MSVC_STATIC_RUNTIME)

-DgRPC_MSVC_STATIC_RUNTIME=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
Copy link
Owner Author

참고 : 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
Copy link
Collaborator

ReU4752 commented Sep 19, 2020

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

-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 하여 해결 da592e9

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

@alkee-allm
Copy link
Owner Author

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

@ReU4752
Copy link
Collaborator

ReU4752 commented Sep 21, 2020

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
Copy link
Collaborator

ReU4752 commented Sep 21, 2020

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
Copy link
Collaborator

ReU4752 commented Sep 22, 2020

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

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

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

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

@ReU4752
Copy link
Collaborator

ReU4752 commented Sep 22, 2020

현재 첫 로그인 후 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
Copy link
Owner Author

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

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

@ReU4752
Copy link
Collaborator

ReU4752 commented Sep 22, 2020

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

@ReU4752
Copy link
Collaborator

ReU4752 commented Sep 22, 2020

현재 문제가 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
Copy link
Collaborator

ReU4752 commented Sep 23, 2020

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

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

@ReU4752
Copy link
Collaborator

ReU4752 commented Sep 24, 2020

현재 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
Copy link
Collaborator

ReU4752 commented Oct 5, 2020

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

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

@Jake-S6
Copy link

Jake-S6 commented Aug 15, 2021

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
Copy link
Owner Author

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

@omrumcetin
Copy link

omrumcetin commented Apr 27, 2023

@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 ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
task normal task URGENT high priority WORKING
Projects
None yet
Development

No branches or pull requests

4 participants