아하
  • 토픽

  • 스파링

  • 잉크

  • 미션


든든한오징어170

든든한오징어170

21.03.16

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 도 최신버전으로 계속 여러번 설치하고 있습니다.

    2개의 답변이 있어요!

    • 파란발구지239

      파란발구지239

      21.03.18

      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로 링크하여사용한다