Visual Studio, импортированный LIB, имеет нестабильное поведение во время выполнения - PullRequest
0 голосов
/ 29 мая 2020

Я пытаюсь скомпилировать библиотеку 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. Только после перекомпиляции всего проекта первое поведение возвращается.

Я подозреваю, что здесь что-то с адресацией идет не так, я предполагаю, что при вызове функций из библиотеки адреса как-то неверны и указывают на несвязанный код. Но это всего лишь предположение. Любая идея, что может вызвать такое поведение?

...