gpt4 book ai didi

c++ - 尝试在 Windows 上执行 C++ 时出错(通过 MinGW 编译)

转载 作者:行者123 更新时间:2023-12-02 10:36:47 26 4
gpt4 key购买 nike

所以我第一次尝试编译并运行一个我做过的c++“应用程序”(试图为我的女朋友做一个简单的练习)但是当试图在Powershell上运行它时,我得到了这个错误:

Program 'Exercice_1.exe' failed to run: The specified executable is not a valid application for this OS platform.At
line:1 char:1
+ .\bin\Exercice_1.exe
+ ~~~~~~~~~~~~~~~~~~~~.
At line:1 char:1
+ .\bin\Exercice_1.exe
+ ~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceUnavailable: (:) [], ApplicationFailedException
+ FullyQualifiedErrorId : NativeCommandFailed

代码只是尝试做我自己的列表(好吧,它还没有完全编码,但我觉得它与系统的关系比与代码的关系更...)

当我只有一台笔记本电脑时,我在 Code::Blocks 上进行了编码,但在那里我尝试在台式计算机上通过命令行编译和运行,我不知道是否必须安装任何东西才能使其正常工作应该管用。

生成文件内容:
CC = g++
CFLAG = -Wall -pedantic
STD = -std=c++11
SRC = src/
INC = include/
OBJ = object/
BIN = bin/

$(BIN)Exercice_1.exe: $(SRC)Exercice_1.cpp $(OBJ)Liste.o $(OBJ)Maillon.o
$(CC) $(STD) -o $@ -c $< $(CFLAG)

$(OBJ)Liste.o: $(SRC)Liste.cpp $(INC)Liste.h $(INC)Maillon.h
$(CC) $(STD) -o $@ -c $< $(CFLAG)

$(OBJ)Maillon.o: $(SRC)Maillon.cpp $(INC)Maillon.h
$(CC) $(STD) -o $@ -c $< $(CFLAG)

clean:
rm -f -R object/*.o
rm -f -R *~

mrproper: clean
rm -f $(BIN)*.exe

我从一个我必须做的旧练习中得到它,并重新安排它以适应我目前的尝试,我很确定它应该很好用,所以我不知道什么不起作用。

如果需要:Exercice_1.cpp 文件:

#include <iostream>

#include "../include/Maillon.h"
#include "../include/Liste.h"

int main(int argc, char* argv[]) {
Maillon<int>* maillon = new Maillon<int>(7);
std::cout << maillon->get_info() << std::endl;

return 0;
}

编辑:
g++ --version 的结果
g++.exe (MinGW.org GCC-8.2.0-5) 8.2.0
Copyright (C) 2018 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

系统信息:
System Type:               x64-based PC

重新编辑:

发现错误,它在makefile中...
当我从旧项目中复制它时,我没有正确复制它,这是更正确的版本:
CC = g++
CFLAG = -Wall -pedantic
STD = -std=c++11
SRC = ./src/
INC = ./include/
OBJ = ./object/
BIN = ./bin/

$(BIN)Exercice_1.exe: $(OBJ)Exercice_1.o $(OBJ)Liste.o $(OBJ)Maillon.o
$(CC) $(STD) -o $@ $^ $(CFLAG)

$(OBJ)Exercice_1.o: $(SRC)Exercice_1.cpp $(INC)Liste.h $(INC)Maillon.h
$(CC) $(STD) -o $@ -c $< $(CFLAG)

$(OBJ)Liste.o: $(SRC)Liste.cpp $(INC)Liste.h $(INC)Maillon.h
$(CC) $(STD) -o $@ -c $< $(CFLAG)

$(OBJ)Maillon.o: $(SRC)Maillon.cpp $(INC)Maillon.h
$(CC) $(STD) -o $@ -c $< $(CFLAG)

它现在无法编译,但因为我显然在代码中犯了错误并试图纠正它们。

非常感谢大家,主要是感谢 mklement0 的帮助,很高兴看到这个社区有多好!

重新编辑:

它现在工作正常:D

最佳答案

备注 :这个答案提供了背景信息:它可能会也可能不会解决您的问题。

问题是 Windows 不知道如何调用您的可执行文件,因为它不使用所需的二进制文件格式 .

你说你用过MinGW编译您的可执行文件,该可执行文件旨在创建 native Windows 应用程序。

由于意外空文件不是您的问题(见下文),您需要调查 MinGW 编译过程实际用于文件 .\bin\Exercice_1.exe 的可执行文件格式类型。 .

您出现症状的一个可能原因是:

如果 .\bin\Exercice_1.exe恰好是一个空(0 字节)文件而不是预期的可执行文件,结果将是您看到的错误消息:

# Create an empty *.exe file and try to invoke it.
PS> $null | Set-Content notreal.exe; ./notreal

Program 'notreal.exe' failed to run: The specified executable is not a valid application for this OS platform.
...

然后您需要调查空 .\bin\Exercice_1.exe文件被意外创建,以及为什么您的编译没有在那里放置有效的可执行文件。

关于c++ - 尝试在 Windows 上执行 C++ 时出错(通过 MinGW 编译),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59935995/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com