2016-09-20 3 views
0

:) Помогите с благодарностью.Компиляция C++ (.cpp) в .exe файл

Я ищу для преобразования .cpp-файла в .exe.

Я пробовал с (MingW) gcc и g ++. Я также попытался вручную скомпилировать его в Visual Studio.

К сожалению, это не компилировать (как на Linux и Windows), так как скомпилированные заголовки не могут быть расположены:

stdafx.h: No such file or directory 

Я попытался вручную загрузить их (скомпилированные заголовки: #include) и изменить #include <stdafx.h> до #include "stdafx.h", чтобы указать на текущую папку вручную загруженных заголовок. Это «работает», но компилируется с огромным количеством ошибок, возможно потому, что это неправильная версия заголовка (только место, где я мог найти заголовок, был на https://sourceforge.net)

Должен быть более простой способ?

+4

Предварительно скомпилированные заголовки с помощью '«stdafx.h»' является Visual Studio вещь. Если вы правильно создадите проект в Visual Studio, он создаст все необходимые вам файлы, включая заголовочный файл '' stdafx.h ''. –

+1

Просто удалите директиву '#include" stdafx.h "'. Вам это не нужно; это чисто оптимизация. –

+1

^Это или использовать '#ifdef WINVER' в' 'include '', чтобы сохранить код переносимым. –

ответ

1

Возможно, вы использовали шаблон проекта, который требует stdafx.h.

Чтобы решить эту проблему, вы можете удалить #include "stdafx.h" в свои файлы cpp.

В качестве альтернативы, переключатель Precompiled header при создании нового проекта с использованием шаблонов VS. Например, Win32 Console Application шаблон:

enter image description here

enter image description here

+1

Боюсь, что это не было проблемой, однако ОП очень неясен. –

+0

Нет связи между шаблонами проектов и предварительно скомпилированными заголовками (кроме того, вы можете включить/отключить использование предварительно скомпилированных заголовков для ** любого типа проекта **). В этом нет ничего особенного в консольных проектах Win32. – IInspectable

+0

Еще фиктивный. Нет шаблона * «требуется» * использование предварительно скомпилированных заголовков. Все шаблоны ** могут ** использовать предварительно скомпилированные заголовки. Предварительно скомпилированные заголовки ** включены по умолчанию для консольных приложений с использованием стандартного * Консольного приложения * Win32 * (Visual Studio 2015). Не похоже, что вы очень довольны этим. – IInspectable

1

stdafx.h это имя файла по умолчанию используется для precompiled header files. Это специальная оптимизация Visual Studio, которая с легкостью сменяет файлы заголовков в двоичном представлении, чтобы ускорить компиляцию.

Один из элементов предварительно скомпилированных файлов заголовков состоит в том, что вы должны включать заголовок, используемый для create the precompiled header file в первой строке без комментариев/без пробелов в каждом блоке компиляции. Так как это может стать нецелесообразным (например, при использовании сторонних библиотек в исходной форме), компилятор позволяет вам включить в него файл заголовка. Коммутатор компилятора /FI (Name Forced Include File) делает именно это.

По существу, решение вашей проблемы:

  1. Удалите #include <stdafx.h> директиву везде.
  2. [Дополнительно] Включить создание предварительно скомпилированных файлов заголовков в проекте Visual Studio.
  3. Используйте переключатель /FI компилятор для Visual Studio, в случае, если вы решили создать скомпилированные файлы заголовков на шаге 2.
Смежные вопросы