軟體升級,原來軟體使用的openssl的版本是1.0.1,需要升級到1.1.0;
結果編譯出現這個錯誤,這個錯誤的原因是,在x509.h標頭檔案裡定義的X509_EXTENSION, 是一個typedef,typedef struct X509_extension_st X509_EXTENSION; 但是在openssl install的 header 檔案中根本就沒有X509_extension_st 這個型別,這個型別是建立在一個私有的header檔案中:x509_lcl.h, 這個標頭檔案見不會安裝到系統的/include/openssl/目錄下。
**.cpp:711:46: error: invalid use of incomplete type 'X509_EXTENSION {aka struct X509_extension_st}'
openssl/x509.h:81:16: error: forward declaration of 'X509_EXTENSION {aka struct X509_extension_st}'
獲取data的例子:
X509_EXTENSION *ex
data = ASN1_STRING_get0_data(X509_EXTENSION_get_data(ext));
https://wiki.openssl.org/index.php/OpenSSL_1.1.0_Changes
https://github.com/openssl/openssl/issues/10197
上面這個網頁中有提到,在新的1.1.0中,openssl有意將一些內部數據隱藏起來,對應的新增了很多函數來存取結構體裡的數據。
The overall