С помощью vscode, почему я не могу скомпилировать, если включены и "iosteam", и "stdio.h"? - PullRequest
0 голосов
/ 11 октября 2019

Когда я объявляю и одновременно vscode не может завершить файл, и появляется журнал ошибок:

    > Executing task: C:\mingw64\bin\gcc.exe -g d:\CODES\C++\try\main.cpp -o d:\CODES\C++\try\main.exe <

C:\Users\16337\AppData\Local\Temp\ccqDR0fO.o: In function `__tcf_0':
C:/mingw64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++/iostream:74: undefined reference to `std::ios_base::Init::~Init()'
C:\Users\16337\AppData\Local\Temp\ccqDR0fO.o: In function `__static_initialization_and_destruction_0':
C:/mingw64/lib/gcc/x86_64-w64-mingw32/7.3.0/include/c++/iostream:74: undefined reference to `std::ios_base::Init::Init()'
collect2.exe: error: ld returned 1 exit status

Мой код очень прост:

#include <iostream>
#include <stdio.h>


int main()
{
    printf("print something");
    return 0;
}

Dev-C ++ может правильно скомпилировать этот код.

Если я удалю #include <iostream>, он может быть правильно скомпилирован.

1 Ответ

5 голосов
/ 11 октября 2019

<iostream> - это стандартный заголовок C ++, поэтому вам нужен компилятор C ++ и компоновщик для его использования. gcc достаточно умен, чтобы скомпилировать .cpp файлы в C ++, однако он не будет связывать стандартную библиотеку с вашей программой, следовательно, с неопределенными ссылками.

Вам нужно использовать g++, который будет связыватьстандартная библиотека C ++ по умолчанию, как это делает Dev-C ++.

...