這個問題已經討論過好幾次了,這次我是來問你的,因為情況是一樣的。
首先,問題的關鍵在于,在HTTPS網頁上使用的Get()功能時TIdHTTP,出現無法加載SSL庫的提示。
所以我添加TIdSSLIOHandlerSocketOpenSSL到TIdHTTP::IOHandler,將TIdHTTP::HandleRedirects屬性更改為 true,將libeay32.dll和ssleay32.dll檔案移動到可執行檔案的位置,并且它在 C Builder Berlin 中正常作業。
但是,在 C Builder 2007 中,即使我使用相同的環境和Get()代碼進行設定,也會出現“無法加載 SSL 庫”錯誤。
如果有人遇到過類似的問題,你能告訴我你的解決方案嗎?
uj5u.com熱心網友回復:
在評論中,您提到 Indy 的WhichFailedToLoad()函式報告..._indyOpenSSL DLL 中缺少各種函式。Indy 正在尋找這些函式的事實意味著您使用的是 Indy v8 或 v9,而不是 v10。您可以通過查看單元中的gsIdVersion全域變數來驗證這一點IdGlobal。
Indy v8 和 v9 需要定制的OpenSSL 0.9.6 DLL。當時,Indy 需要訪問 OpenSSL 尚未公開訪問的各種 OpenSSL 內部結構(在后來的 OpenSSL 版本中得到糾正),因此 Indy 需要向 DLL 添加一些自定義函式。您可以從Indy 的 OpenSSL-Binaries存盤庫的Archive檔案夾中獲取這些 DLL 。
但是,Indy v8 和 v9 已經過時,不再受支持。它們不支持 OpenSSL 1.0.x 及更高版本。您必須升級到使用標準OpenSSL DLL 的Indy v10,并正式支持最高 OpenSSL 1.0.2u(對 OpenSSL 1.1.x 的支持正在進行中,但如果您需要使用 OpenSSL 1.1.x,您可以嘗試一下,例如 TLS 1.3)。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/376365.html
標籤:C ssl openssl 时间:2019-05-06 标签:c builder 印地
