我在我的C++項目中使用第三方靜態庫,它依賴於libssl 0.9.7a版本。由於各種原因,我的項目使用的libssl版本是0.9.8e。是否與0.9.7a兼容的libssl 0.9.8e版本?
一切工作正常,直到第三方對其靜態庫進行了最近的更改。當它包含這個新版本的靜態庫時,我無法成功地編譯我的應用程序。舊版本編譯得很好。
我不是很熟悉這些庫依賴和它們的向後兼容性。我們被告知我們必須使用第三方建議的版本。我只是想知道這是否是真正的原因。國際海事組織,我想它應該是向後兼容的,不是嗎?
任何方向與解決這個問題非常感謝。
下面是我得到的編譯錯誤:
cc1plus: note: obsolete option -I- used, please use -iquote instead
In file included from /usr/include/openssl/e_os2.h:56,
from /usr/include/openssl/ssl.h:173,
from MyClass.cpp:28:
/usr/include/openssl/opensslconf.h:13:30: error: opensslconf-i386.h: No such file or directory
/usr/include/openssl/bn.h:288: error: expected ';' before '*' token
/usr/include/openssl/bn.h:304: error: 'BN_ULONG' does not name a type
/usr/include/openssl/bn.h:407: error: 'BN_ULONG' was not declared in this scope
/usr/include/openssl/bn.h:450: error: 'BN_ULONG' does not name a type
/usr/include/openssl/bn.h:451: error: 'BN_ULONG' does not name a type
/usr/include/openssl/bn.h:452: error: 'BN_ULONG' has not been declared
/usr/include/openssl/bn.h:453: error: 'BN_ULONG' has not been declared
/usr/include/openssl/bn.h:454: error: 'BN_ULONG' has not been declared
/usr/include/openssl/bn.h:455: error: 'BN_ULONG' has not been declared
/usr/include/openssl/bn.h:456: error: 'BN_ULONG' does not name a type
/usr/include/openssl/bn.h:471: error: 'BN_ULONG' has not been declared
/usr/include/openssl/bn.h:764: error: 'BN_ULONG' does not name a type
/usr/include/openssl/bn.h:765: error: 'BN_ULONG' does not name a type
/usr/include/openssl/bn.h:766: error: variable or field 'bn_sqr_words' declared void
/usr/include/openssl/bn.h:766: error: 'BN_ULONG' was not declared in this scope
/usr/include/openssl/bn.h:766: error: 'rp' was not declared in this scope
/usr/include/openssl/bn.h:766: error: expected primary-expression before 'const'
/usr/include/openssl/bn.h:766: error: expected primary-expression before 'int'
/usr/include/openssl/bn.h:767: error: 'BN_ULONG' does not name a type
/usr/include/openssl/bn.h:768: error: 'BN_ULONG' does not name a type
/usr/include/openssl/bn.h:769: error: 'BN_ULONG' does not name a type
/usr/include/openssl/ssl3.h:303: error: 'PQ_64BIT' does not name a type
/usr/include/openssl/pqueue.h:73: error: 'PQ_64BIT' does not name a type
/usr/include/openssl/pqueue.h:80: error: 'PQ_64BIT' was not declared in this scope
/usr/include/openssl/pqueue.h:80: error: expected primary-expression before 'void'
/usr/include/openssl/pqueue.h:89: error: 'PQ_64BIT' has not been declared
/usr/include/openssl/dtls1.h:92: error: 'PQ_64BIT' does not name a type
/usr/include/openssl/dtls1.h:94: error: 'PQ_64BIT' does not name a type
該錯誤消息說,有沒有這樣的文件作爲opensslconf-i386.h,但它確實存在。
任何想法發生了什麼問題?
謝謝你的時間!
@Jonathan:非常感謝您的回覆!我認爲,我的建議取得了一些進展。我使用靜態庫編寫了一個示例客戶端來孤立地測試此問題,並查看示例客戶端編譯是否正常(我的應用程序是怪物)。示例客戶端編譯良好,沒有任何問題。所以,如你所說,這個問題似乎是命令行。現在我將看看正在使用的命令行選項,如果我有任何疑問,請回復您。 – Srikanth 2009-10-27 15:26:02
@Jonathan:我想我找到了根本原因。 OpenSSL庫不包含在我的應用程序的make文件中。我添加了'/ usr/include/openssl $',我的應用程序正在編譯。 再次感謝您的幫助! – Srikanth 2009-10-27 15:42:01
很高興你再次開始運行。 – 2009-10-27 16:58:38