Я пытаюсь скомпилировать эту библиотеку ndn-cxx в моем ноутбуке. Я уже пробовал на другом компьютере, и он скомпилирован успешно, но теперь я получаю эту ошибку, и я думаю, что это связано с тем, чтобы открыть openssl. Я проверяю, что у меня есть openssl в моем ноутбуке, используя sudo apt-cache search libssl | Grep SSL и результат:Ошибка: неполный тип при использовании HMAC_CTX в проекте C++
- libssl-OCaml - OCaml привязки для OpenSSL (исполнения)
- libssl-OCaml-DEV - OCaml привязки для OpenSSL
- libssl0.9.8 - SSL разделяемых библиотеки
- libsslcommon2 - предприятие системы обмена сообщениями - общие библиотеки SSL
- libsslcommon2-DEV - предприятие системы обмена сообщениями - файлы для разработки общего SSL
Ошибки я получаю при попытке компиляции библиотеки является:
../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]
}
^
Какая операционная система и версия gcc находятся на удачном компьютере и неуспешном ноутбуке? –
'HMAC_CTX' является публичной структурой данных. Убедитесь, что '#include' присутствует в проблемном исходном файле. Если присутствует include, нам нужно знать, где находится ваша копия OpenSSL, и как вы настроили свой проект. OpenSSL 0.9.8 действительно старый и его прошлый EOL. Но его '' включает 'HMAC_CTX'. Вы на машине OS X? –
jww
@PaulH. Я использую ubuntu 14.04 как в ноутбуках, так и в gcc версии 4.8, и они оба находятся в одном месте/usr/lib/x86_64-linux-gnu –