Какова функция libgcc_s_dw2-1.dll? - PullRequest
0 голосов
/ 15 ноября 2018

Я написал следующую программу в Codeblocks

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int a, b, c;
    a = 5;
    b = 6;
    c = a+b;
    printf("Hello world!\n");
    return 0;
}  

для отладочной и релизной сборок. EXE-файлы создаются в соответствующих папках bin \ debug и bin \ release, и программа прекрасно работает при запуске из кодовых блоков.

Однако, когда я пытаюсь выполнить exe-файлы в форме bin \ debug или bin \ release, я получаю ошибку libgcc_s_dw2-1.dll is missing from your computer..

Поиск libgcc_s_dw2-1.dll выявляет только другие сообщения, в которых спрашивается, как решить эту проблему, где предлагаемое решение - либо добавить путь к libgcc_s_dw2-1.dll, который находится где-то внутри установки MinGW, в системный путь или статически связать файл dll с программой во время компиляции.

Мой вопрос: зачем это нужно? Это очень простая программа Hello World. Файл находится в проекте codeblocks, и расширение файла .c (main.c, так что я предполагаю, что gcc автоматически вызывает компилятор C и не имеет никакого отношения к компиляции кода C с помощью компилятора cpp?) И Настройки компилятора остались на своих значениях по умолчанию после новой установки MinGW и Codeblocks. Поскольку эта программа очень проста, я предполагаю, что она должна работать так же, как и в любых других старых версиях компиляторов.

Тогда какая польза от этого DLL-файла? Что происходит под капотом при компиляции этой программы? Предположим, я скомпилировал вышеприведенную программу hello world и разослал exe-файл своим друзьям. Как я должен знать, что я должен был статически связать файл DLL во время компиляции?

...