J'utilise une bibliothèque statique tierce dans mon projet C++ qui dépend de libssl version 0.9.7a. Pour diverses raisons, la version libssl utilisée par mon projet est 0.9.8e.Est-ce que libssl version 0.9.8e est compatible avec 0.9.7a?
Tout fonctionnait correctement, jusqu'à ce que la troisième partie apporte une modification récente à leur bibliothèque statique. Je n'ai pas réussi à compiler mon application lorsqu'elle a inclus cette nouvelle version de la bibliothèque statique. L'ancienne version compile bien.
Je ne suis pas très familier avec ces dépendances de bibliothèque et leur rétrocompatibilité. On nous a dit que nous devions utiliser la version suggérée par le tiers. Je veux juste savoir si c'est vraiment la raison. OMI, je suppose que ce devrait être rétrocompatible, n'est-ce pas?
Toute direction pour résoudre ce problème est très appréciée.
Ce qui suit est l'erreur de compilation que je reçois:
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
Le message d'erreur indique qu'il n'y a pas de fichier comme opensslconf-i386.h, mais il est bien présent.
Une idée de ce qui ne va pas?
Merci pour votre temps!
@Jonathan: Merci beaucoup pour votre réponse! Je pense, j'ai fait un peu de progrès avec vos suggestions. J'ai écrit un exemple de client en utilisant la bibliothèque statique pour tester ce problème de manière isolée et voir si l'exemple de client compile bien (mon application est un monstre). L'exemple de client compilé correctement sans aucun problème. Donc, le problème, comme vous l'avez suggéré, semble être la ligne de commande. Je vais maintenant jeter un coup d'œil aux options de ligne de commande utilisées, et revenir vers vous si j'ai des doutes. – Srikanth
@Jonathan: Je suppose que j'ai trouvé la cause première. Les bibliothèques OpenSSL n'étaient pas incluses dans le fichier make de mon application. J'ai ajouté '/ usr/include/openssl $' et mon application compile bien. Merci encore pour votre aide! – Srikanth
Heureux que vous soyez à nouveau opérationnel. –