1. ホーム
  2. c++

[解決済み] ターゲット 'Project1.exe' のレシピに失敗しました。

2022-02-07 05:02:23

質問内容

にある簡単なcファイルをコンパイルしようとします。 Dev-C++ と表示され、25行目でエラーになります C:\Users\varun\Desktop\cprog\Makefile.win recipe for target 'Project1.exe' failed.

Makefile.win

# Project: Project1
# Makefile created by Dev-C++ 5.6.2

CPP      = g++.exe
CC       = gcc.exe
WINDRES  = windres.exe
OBJ      = main.o Untitled2.o
LINKOBJ  = main.o Untitled2.o
LIBS     = -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib" -L"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/lib" -static-libgcc
INCS     = -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.8.1/include"
CXXINCS  = -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/x86_64-w64-mingw32/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.8.1/include" -I"C:/Program Files (x86)/Dev-Cpp/MinGW64/lib/gcc/x86_64-w64-mingw32/4.8.1/include/c++"
BIN      = Project1.exe
CXXFLAGS = $(CXXINCS) 
CFLAGS   = $(INCS) 
RM       = rm.exe -f

.PHONY: all all-before all-after clean clean-custom

all: all-before $(BIN) all-after

clean: clean-custom
    ${RM} $(OBJ) $(BIN)

$(BIN): $(OBJ)
    **$(CC) $(LINKOBJ) -o $(BIN) $(LIBS)**

main.o: main.c
    $(CC) -c main.c -o main.o $(CFLAGS)

Untitled2.o: Untitled2.c
    $(CC) -c Untitled2.c -o Untitled2.o $(CFLAGS)

エラー

C:\Users\varun\Desktop\cprog\Untitled2.o    Untitled2.c:(.text+0x0): multiple definition of `main'
C:\Users\varun\Desktop\cprog\main.o main.c:(.text+0x0): first defined here
C:\Users\varun\Desktop\cprog\collect2.exe   [Error] ld returned 1 exit status
25      C:\Users\varun\Desktop\cprog\Makefile.win   recipe for target 'Project1.exe' failed

解決方法は?

出力の重要な部分です。

C:\Users\varun\Desktop\cprog\Untitled2.o    Untitled2.c:(.text+0x0): multiple definition of `main'

これは、関数の定義が2つあることを教えてくれます。 main . このような定義は、実行ファイルには1つだけ必要です。エラーの次の行は、その定義がどこにあるのかを教えてくれます。

C:\Users\varun\Desktop\cprog\main.o main.c:(.text+0x0): first defined here

ということで、関数 main で定義されている Untitled2.c で、もう一つの関数 main で定義されている main.c . そのうちの1つを削除してください。名前から、おそらく main.c は全く必要ないのですが、ファイルを見ないと分かりません。