Friday, December 28, 2007

openssl 版本的問題

最近工作的關係,需要作一個 ftps 的元件。後來找了很久,發現沒有開放原始碼的元件,但是有開放原始碼的程式-Filezilla。後來就套用 Filezilla 的 Source code 加以修改,做成了一個元件。不過測試時,呼叫第一次沒有問題,呼叫第二次時,就會產生 Access Violation 的錯誤。這個問題困擾了很久,但是一直無解。最近老闆又再問起進度,於是又將程式碼拿出來查看。後來在和 Filezilla 的設定做比較時,發現 Filezilla 是用 LoadLibrary 的方式使用 openssl,於是我就將原先 Additional Dependencies 中的 libeay32.lib 與 ssleay32.lib 移除。但是 compile 時卻出現無法連結到 BIO_test_flags 的問題。後來再檢查 Filezilla 所使用的 openssl 版本,結果發現我使用的 Filezilla 是使用 openssl-0.9.8d 的版本,於是再下載該版本來使用,結果還是有問題。後來發現 Filezilla 的目錄中有 openssl 的目錄,裡面是他所使用的 include 檔,於是將該目錄複製到我的工作目錄中,再於 Options 中的 include 使用目錄中新增該路徑後,可成功編譯。後來再作一次測試,發現之前的錯誤不會出現了,真是太神奇了。也又給了我ㄧ個教訓 - 版本真的很重要啊!

0 Comments:

Post a Comment

<< Home