Подскажите пожалуйста, exe`шник после сборки через Сmake и mingw32-make не запускается
У меня установлен Cmake и MinGW. Оба находятся в переменных средах. Хочу собрать проект. Использую команду cmake .. -G «MinGW Makefiles», после этого запускаю команду mingw32-make. Все собирается, экзешник появляется, но не запускается. Ошибка: Точка входа в процедуру _ZdlPvj не найдена в библиотеке DLL. CMakeLists.txt:
cmake_minimum_required(VERSION 3.0) set(CMAKE_BUILD_TYPE Release) set(CMAKE_CXX_FLAGS "$ -std=c++14 -Wall") project(Packman) add_executable(main main.cpp Constants.h Game.h Ghost.h ICharacter.h Packman.h Pellet.h setConsoleAtributes.h Game.cpp Ghost.cpp Pellet.cpp Packman.cpp SetConsoleAtributes.cpp)
Запускаю через g++ командой: g++ -o name.exe -std=c++14 -static-libgcc -static-libstdc++ main.cpp Constants.h Game.h Ghost.h ICharacter.h Packman.h Pellet.h setConsoleAtributes.h Game.cpp Ghost.cpp Pellet.cpp Packman.cpp SetConsoleAtributes.cpp и все собирается. Но через Cmake не получается. Подскажите, в чем может быть проблема? Думаю, что в статической линковке, но я не уверен. Если да, то как правильно ее настроить через Cmake? Спасибо, буду рад любой помощи.
Имя make не распознано как имя командлета
Рассмотрим создание первой простейшей программы на C++ с помощью компилятора g++ , который на сегодняшний день является одним из наиболее популярных компиляторов для C++, доступен для разных платформ и который распространяется в рамках пакета компиляторов GCC. Более подробную информацию о g++ можно получить на официальном сайте проекта https://gcc.gnu.org/.
Набор компиляторов GCC распространяется в различных версиях. Для Windows одной из наиболее популярных версий является пакет средств для разработки от некоммерческого проекта MSYS2 . Следует отметить, что для MSYS2 требуется 64-битная версия Windows 7 и выше (то есть Vista, XP и более ранние версии не подходят)
Итак, загрузим программу установки MSYS2 с официального сайта MSYS2:

После загрузки запустим программу установки:

На первом шаге установки будет предложено установить каталог для установки. По умолчанию это каталог C:\msys64:

Оставим каталог установки по умолчанию (при желании можно изменить). На следующем шаге устанавливаются настройки для ярлыка для меню Пуск, и затем собственно будет произведена установка. После завершения установки нам отобразить финальное окно, в котором нажмем на кнопку Завершить

После завершения установки запустится консольное приложение MSYS2.exe. Если по каким-то причинам оно не запустилось, то в папке установки C:/msys64 надо найти файл usrt_64.exe :

Теперь нам надо установить собственно набор компиляторов GCC. Для этого введем в этом приложении следующую команду:
pacman -S mingw-w64-ucrt-x86_64-gcc
Для управления пакетами MSYS2 использует пакетный менеджер Packman. И данная команда говорит пакетному менеджеру packman установить пакет mingw-w64-ucrt-x86_64-gcc , который представляет набор компиляторов GCC (название устанавливаемого пакета указывается после параметра -S ).

и после завершения установки мы можем приступать к программированию на языке C++. Если мы откроем каталог установки и зайдем в нем в папку C:\msys64\ucrt64\bin , то найдем там все необходимые файлы компиляторов:

В частности, файл g++.exe как раз и будет представлять компилятор для языка С++.
Далее для упрощения запуска компилятора мы можем добавить путь к нему в Переменные среды. Для этого можно в окне поиска в Windows ввести «изменение переменных среды текущего пользователя»:

Нам откроется окно Переменных среды:

И добавим путь к компилятору C:\msys64\ucrt64\bin :

Чтобы убедиться, что набор компиляторов GCC успешно установлен, введем следующую команду:
gcc --version
В этом случае нам должна отобразиться версия компиляторов

Создание первой программы
Итак, компилятор установлен, и теперь мы можем написать первую программу. Для этого потребуется любой текстовый редактор для набора исходного кода. Можно взять распространенный редактор Visual Studio Code или даже обычный встроенный Блокнот.
Итак, создадим на жестком диске С папку для исходных файлов. А в этой папке создадим новый текстовый файл, который переименуем в hello.cpp . То есть по сути файлы исходного кода на С++ — это обычные текстовые файлы, которые, как правило, имеют расширение cpp .

В моем случае файл hello.cpp находится в папке C:\cpp.
Теперь определим в файле hello.cpp простейший код, который будет выводить строку на консоль:
#include // подключаем заголовочный файл iostream int main() // определяем функцию main < // начало функции std::cout // конец функции
Для вывода строки на консоль необходимо подключить нужный функционал. Для этого в начале файла идет строка
#include
Данная строка представляет директиву препроцессора, которая позволяет подключить библиотеку iostream. Эта библиотека нужна для вывода строки на консоль.
Далее идет определение функции main . Функция main должна присутствовать в любой программе на С++, с нее собственно и начинается выполнение приложения.
Функция main состоит из четырех элементов:
- Тип возвращаемого значения . В данном случае это тип int . Этот тип указывает, что функция должна возвращать целое число.
- Имя функции . В данном случае функция называется main.
- Список параметров . После имени функции в скобках идет список параметров. Но в данном случае скобки пустые, то есть функция main не принимает параметров.
- Тело функции . После списка параметров в фигурных скобках идет тело функции. Здесь и определяются собственно те действия, которые выполняет функция main.
В теле функции происходит вывод строки на консоль. Для обращения к консоли используется стандартный поток вывода std::cout . С помощью оператора
В конце осуществляем выход из функции с помощью оператора return . Так как функция должна возвращать целое число, то после return указывается число 0. Ноль используется в качестве индикатора успешного завершения программы.
После каждой инструкции в языке C++ ставятся точка с запятой.
Каждая строка снабжена комментарием. Все, что написано после двойного слеша // представляет комментарий. Комментарий не учитывается при компиляции приложения, и не является частью программного кода, а служат лишь для его описания. Комментарий позволяет понять, что делает программа.

Теперь скомпилируем этот файл. Для этого откроем командную строку Windows и вначале с помощью команды cd перейдем к папке с исходным файлом:
cd C:\cpp
Чтобы скомпилировать исходный код, необходимо компилятору gcc передать в качестве параметра файл hello.cpp:
g++ hello.cpp -o hello
Дополнительный необязательный параметр -o hello указывает, что скомпилированный файл будет называться hello.exe. Если не указать этот параметр, то файл будет называться по умолчанию - a.exe.
После выполнения этой команды будет скомпилирован исполняемый файл, который в Windows по умолчанию называется hello.exe. И мы можем обратиться к этому файлу, и в этом случае консоль выведет строку "Hello METANIT.COM!", собственно как и прописано в коде.

Если вместо командной строки используется оболочка PowerShell, то для запуска файла надо прописать "./hello".
Стоит отметить, что мы можем совместить компиляцию и выполнение следующей командой:
g++ hello.cpp -o hello.exe & hello.exe
Makefile Tools doesn't work for some reason
I want to use the make command to compile my files. I installed Makefile Tools from the Marketplace, created a Makefile in my directory, but when I use the make command, it throws an error:
-
make main.cpp
+ CategoryInfo : ObjectNotFound: (make:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
which means that make was not found. I didn't touch any configuration files. I searched the Net and found nothing about it.
asked Nov 12, 2022 at 13:55
99 1 1 silver badge 6 6 bronze badges
1 Answer 1
It's helpful to us if the question provides more details about your environment: what is "Makefile Tools"? Which "Marketplace"? What operating system are you using? Also, when formatting command output in your question please use the "Code Sample" format, not the "Blockquote" format, so that SO doesn't reformat the text.
If you mean the Visual Code extension "Makefile Tools", then that extension only provides an interface to running make and managing Makefiles; it doesn't provide the actual make program itself.
If you're using a Windows system you will have to go find a make program and install it on your system before you can run it. There are various options depending on what environment you want to build in.
Laravel на Homestead. Ошибка при запуске php artisan — имя «php» не распознано как имя командлета, функции. Как исправить?
Согласно документации, установил и развернул проект на Laravel под Homestead, Vagrant up- все работает.
Но когда пытаюсь из директории laravel в консоле запустить команду php artisan make:controller PhotoController --resource
PS E:\for_laravel\projects\test\laravel> php artisan make:controller PhotoController --resource php : Имя "php" не распознано как имя командлета, функции, файла сценария или выполняемой программы. Проверьте правильность написания имени, а также наличие и правильность пути, после чего повторите попытку.
Я так понимаю, что необходимо в системе windows путь PATH к PHP, Но PHP находится где-то на виртуальной машине Homestead. Как решить проблему?
- Вопрос задан более трёх лет назад
- 750 просмотров