Я пытаюсь скомпилировать библиотеку mbedTLS в c связанную библиотеку (.lib) и включить ее в свой существующий проект. Мой проект - это проект windows VS C ++. mbedTLS поставляется с VS-решением для сборки библиотеки, и использование библиотеки в примерах программ отлично работает. Включение библиотеки в мой собственный проект вызывает некоторые странные проблемы. Он компилируется нормально, но во время выполнения, кажется, происходят странные вещи. Рассмотрим следующий код:
mbedtls_entropy_context entropy;
//call to the library
//entropy.source_count is now 0
mbedtls_entropy_init(&entropy);
//entropy.source_count seems to be 2 now
if (entropy.source_count == 0)
return -1; //however, this return is always reached
//... more code ...
Функция Init должна инициировать структуру, а член должен иметь значение 2 после выполнения функции. Пошагово просматривая код, я вижу, что член имеет значение 2. Однако предложение if всегда оценивается как истинное, что не имеет смысла. Кстати: если я изменю любую строку (совершенно несвязанного) кода и перекомпилирую, при следующем запуске член будет равен 0 после функции Init. Только после перекомпиляции всего проекта первое поведение возвращается.
Я подозреваю, что здесь что-то с адресацией идет не так, я предполагаю, что при вызове функций из библиотеки адреса как-то неверны и указывают на несвязанный код. Но это всего лишь предположение. Любая идея, что может вызвать такое поведение?