Я написал следующую программу в 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 во время компиляции?