Исключительная ситуация в 0x00080000 в ConsoleApplication2.exe: 0xC0000005: расположение выполнения нарушения прав доступа 0x00080000 Visual studio - PullRequest
1 голос
/ 30 марта 2020

Я просмотрел похожие темы, но не смог решить эту проблему.

Вот мой код:

#include <iostream>
#include <sstream>
#include <string>
#include <iomanip>
#include <stdio.h>
#include <openssl/sha.h>

#define _CRT_SECURE_NO_WARNINGS

std::string sha256(const std::string str)
{
    unsigned char hash[SHA256_DIGEST_LENGTH];
    SHA256_CTX sha256;
    SHA256_Init(&sha256); //HERE I AM RECEIVING ERROR
    SHA256_Update(&sha256, str.c_str(), str.size());

    SHA256_Final(hash, &sha256);

    std::stringstream ss;
    for (int i = 0; i < SHA256_DIGEST_LENGTH; i++)
    {
        ss << std::hex << std::setw(2) << std::setfill('0') << (int)hash[i];
    }

    return ss.str();
}

void sha256_hash_string(unsigned char hash[SHA256_DIGEST_LENGTH], char outputBuffer[65])
{
    int i = 0;

    for (i = 0; i < SHA256_DIGEST_LENGTH; i++)
    {
#pragma warning(suppress : 4996)  sprintf(outputBuffer + (i * 2), "%02x", hash[i]);
    }

    outputBuffer[64] = 0;
}

int main()
{
    // hash a string
    std::cout << "SHA-256 hash of \"Sample String\" text:" << std::endl;
    std::cout << sha256("Sample String") << std::endl << std::endl;

    // hash a file

    return 0;
}

Я прокомментировал строку, где он выдает ошибку:

Исключение, выданное в 0x00080000 в ConsoleApplication2.exe: 0xC0000005: Местоположение выполнения нарушения прав доступа 0x00080000.

Конфигурация компоновщика: компоновщик> ввод

компоновщик> общий

C / C ++ Конфигурация: C / C ++. Общий

1 Ответ

0 голосов
/ 30 марта 2020

Ваша конфигурация сборки показывает, что вы работаете в 32-битном режиме, т.е. отладке Win-32, но библиотека, на которую вы ссылаетесь, является 64-битной. Вам нужно установить конфигурацию сборки как 64-битную, собрать проект заново и запустить.

Кроме того, вам необходимо скопировать необходимые библиотеки DLL в каталог сборки, где находится бинарный файл программы, если они не находятся в системный путь, например System32. Если вы отправляете свое приложение, позаботьтесь о добавлении этого шага в конфигурацию вашей системы упаковки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...