Ich versuche, diese Bibliothek ndn-cxx in meinem Laptop zu kompilieren. Ich probierte bereits in einem anderen Computer und es kompilierte erfolgreich, aber jetzt erhalte ich diesen Fehler und ich denke, dass es somhow zu openssl verwandt ist. Ich verifiziere, dass ich openssl in meinem Laptop unter Verwendung sudo apt-cache search libssl | habe grep SSL und das Ergebnis ist:Fehler: unvollständiger Typ bei Verwendung von HMAC_CTX in C++ Projekt
- libssl-ocaml - OCaml-Bindungen für OpenSSL (Runtime)
- libssl-ocaml-dev - OCaml-Bindungen für OpenSSL
- libssl0.9.8 - SSL shared libraries
- libsslcommon2 - Enterprise-Messaging-System - gemeinsame SSL-Bibliotheken
- libsslcommon2-dev - Enterprise-Messaging-System - gemeinsame SSL Entwicklungsdateien
Der Fehler, den ich immer bin, wenn die Bibliothek zu kompilieren versuchen, ist:
../src/security/transform/hmac-filter.cpp:49:12: error: field ‘m_context’ has incomplete type
HMAC_CTX m_context;
^
../src/security/transform/hmac-filter.cpp: In constructor
‘ndn::security::transform::HmacFilter::Impl::Impl()’:
../src/security/transform/hmac-filter.cpp:35:20: error: ‘m_context’ was not declared in this scope
HMAC_CTX_init(&m_context);
^
../src/security/transform/hmac-filter.cpp:35:29: error: ‘HMAC_CTX_init’ was not declared in this scope
HMAC_CTX_init(&m_context);
^
../src/security/transform/hmac-filter.cpp: In destructor ‘ndn::security::transform::HmacFilter::Impl::~Impl()’:
../src/security/transform/hmac-filter.cpp:40:23: error: ‘m_context’ was not declared in this scope
HMAC_CTX_cleanup(&m_context);
^
../src/security/transform/hmac-filter.cpp:40:32: error: ‘HMAC_CTX_cleanup’ was not declared in this scope
HMAC_CTX_cleanup(&m_context);
^
../src/security/transform/hmac-filter.cpp: In member function ‘ndn::security::transform::HmacFilter::Impl::operator HMAC_CTX*()’:
../src/security/transform/hmac-filter.cpp:45:13: error: ‘m_context’ was not declared in this scope
return &m_context;
^
../src/security/transform/hmac-filter.cpp:46:3: warning: control reaches end of non-void function [-Wreturn-type]
}
^
Welches Betriebssystem und welche gcc-Version sind auf dem erfolgreichen Computer und dem fehlgeschlagenen Laptop? –
'HMAC_CTX' ist eine öffentliche Datenstruktur. Stellen Sie sicher, dass '#include' in der problematischen Quelldatei vorhanden ist. Wenn das Include vorhanden ist, müssen wir wissen, wo sich Ihre Kopie von OpenSSL befindet und wie Sie Ihr Projekt konfiguriert haben. OpenSSL 0.9.8 ist wirklich alt und seine Vergangenheit EOL. Aber seine '' enthält 'HMAC_CTX'. Sind Sie auf einem OS X-Computer? –
jww
@PaulH. Ich benutze Ubuntu 14.04 in beiden Laptops und gcc Version 4.8 und sie sind beide an der gleichen Stelle/usr/lib/x86_64-Linux-gnu –