error: aggregate ‘EVP_CIPHER_CTX ctx’ has incomplete type and cannot be defined
코인 프로그램을 만드는 데
이런 오류가 뜨네요
crypter.cpp:72:20: error: aggregate ‘EVPCIPHERCTX ctx’ has incomplete type and cannot be defined
무엇이 잘못된 건지??
어렵네요
우분투 최신버전 사용하고 있으며, openssl 도 최신버전으로 계속 여러번 설치하고 있습니다.
OpenSLS 1.1.0 이후 부터 EVP CIPHERCTX에 대한 문법이 변경된것으로 알고 있습니다.
버전 1.0.0
EVPCIPHERCTX ctx;
EVPCIPHERCTX_init(&ctx);
버전 1.1.0
EVPCIPHERCTX *ctx = EVPCIPHERCTX_new();
EVPCIPHERCTX_init(ctx);
후처리
버전 1.0.0
EVPCIPHERCTX_cleanup(&ctx);
버전 1.1.0
EVPCIPHERCTX_free(ctx);
위와 같은 방법으로 버전에 따라 문법이 변경된 경우가 있으니 한번 확인해보시기 바랍니다.
openssl 1.1.x부터 EVP_CIPHET_CTX structure는 구조체 자체를 변수로 사용하지않고,
포인터형에 아래와같이 할당하여사용하여야합니다.
EVPCIPHERCTX *ctx=EVP_CIPHER_CTX_new();
아마 openssl을 1.1.x사용하시면서 해당 코드에서 위 구조체를 직접 변수로 사용하여 에러가발생하는것같네요
두가지시도방법이 있겠습니다.
1)openssl을 1.1.x사용하는 상태에서 에러발생하는코드를 위와같이 포인터 형 방식으로 수정한다.
2)openssl버젼을 1.0.x로 링크하여사용한다