2012-06-01 48 views
11

我試圖運行一個簡單的程序,使用Qt編寫並使用QSslSocket。 我在Ubuntu 12.04機器上運行此程序,安裝了OpenSSL。 但我得到了以下錯誤:使用QSslSocket時未解決的函數

QSslSocket: cannot call unresolved function SSLv3_client_method 
QSslSocket: cannot call unresolved function SSL_CTX_new 
QSslSocket: cannot call unresolved function SSL_library_init 
QSslSocket: cannot call unresolved function ERR_get_error 

如何解決這些錯誤?

+1

嘗試將'libcrypto'和'libssl'複製到您啓動應用程序的位置 – maverik

+0

@maverik〜>謝謝!您的解決方案很有用。 – saeed

回答

1

您需要包括此文件:

#include <QtNetwork> 

而在你.pro文件,加入這一行:

QT += network 
+1

謝謝你!但如果我沒有完成這些步驟,我甚至無法使用QSslSocket本身。 – saeed

+1

如果你使用'QWebView',你可以使用沒有'+ = network'的'QSslSocket'。也就是說,問題不是由於缺少'+ =網絡'引起的;這是因爲缺少OpenSSL DLL。 – Timmmm

3

我曾與QT 5.0.1和5.1.1 QT同樣的問題,最後我意識到我需要複製應用程序二進制文件旁邊的OpenSSL DLL文件。出於某種原因,QT不從Windows路徑加載DLL文件...

我用OpenSSL Win32 0_9_8y

2

對於Ubuntu或者(Debian的基於Linux的)安裝OpenSSL和的li​​bssl-dev的

須藤apt-get install openssl libssl-dev

對於Red Hat,Fedora的,CentOS的(基於RPM的Linux),你需要將這些文件複製到安裝OpenSSL和OpenSSL的-devel的

百勝安裝的OpenSSL的OpenSSL devel的

21

在Windows/MinGW的你的exe目錄。

C:\Qt\Tools\mingw492_32\opt\bin\libeay32.dll 
C:\Qt\Tools\mingw492_32\opt\bin\ssleay32.dll 

或者你可以將它們複製到C:\Qt\Tools\mingw492_32\bin,如果你想讓它與所有的應用程序工作。顯然你需要將它們分發給你的程序。

你其實不需要需要加QT += network

+0

這就是爲什麼我喜歡SO。爲了供您參考,最新的Qt/MinGW在'\ Qt \ Tools \ mingw530_32 \ opt \ bin'中包含這些DLL。 – TranslucentCloud

0

在Debian上安裝lua-openssl包似乎已經解決了我的問題。

相關問題