error: duplicate definition: cmnuvga_c::_main

Post Reply
andromeda92
Member
Posts: 67
Joined: Wed Apr 17, 2024 1:05 am

error: duplicate definition: cmnuvga_c::_main

Post by andromeda92 »

Hi,
I don't understand why i have this error, because i have one main, not duplicate.

Code: Select all

zcc +cpm -vn -O3 -compiler=sdcc -pragma-define:CRT_HEAP_AMALLOC=1 -Iinclude -o obj/cmnuvga.o -c src/cmnuvga.c
zcc +cpm -vn -O3 -compiler=sdcc -pragma-define:CRT_HEAP_AMALLOC=1 -Iinclude -o obj/menu.o -c src/menu.c
zcc +cpm -vn -O3 -compiler=sdcc -pragma-define:CRT_HEAP_AMALLOC=1 -Iinclude -o obj/app.o -c src/app.c
zcc +cpm -vn -O3 -compiler=sdcc -pragma-define:CRT_HEAP_AMALLOC=1 -Iinclude -o obj/cpmkey.o -c src/cpmkey.c
zcc +cpm -vn -O3 -compiler=sdcc -pragma-define:CRT_HEAP_AMALLOC=1 -Iinclude -o obj/gui.o -c src/gui.c
zcc +cpm -vn -O3 -compiler=sdcc -pragma-define:CRT_HEAP_AMALLOC=1 -Iinclude -o obj/input.o -c src/input.c
zcc +cpm -vn -O3 -compiler=sdcc -pragma-define:CRT_HEAP_AMALLOC=1 -Iinclude -o obj/cpmconio.o -c src/cpmconio.c
zcc +cpm -vn -O3 -compiler=sdcc -pragma-define:CRT_HEAP_AMALLOC=1 -Iinclude src/cmnuvga.c obj/cmnuvga.o obj/menu.o obj/app.o obj/cpmkey.o obj/gui.o obj/input.o obj/cpmconio.o -create-app -obin/cmnuvga.com
obj/cmnuvga.asm: error: duplicate definition: cmnuvga_c::_main
make: *** [cmnuvga] Error 1
MAKEFILE:

Code: Select all

SHELL=cmd
RUNCPM_PATH=D:/EMULATOR/RUNCPM/B/0/
PNAME=cmnuvga
SRCDIR=src
OBJDIR=obj
BINDIR=bin
CC=zcc +cpm -vn -O3

MAINSRC = $(SRCDIR)/$(PNAME).c

# These are the sources that must be compiled to .rel files:
SRCS =	\
	src/cmnuvga.c	\
	src/menu.c \
	src/app.c \
	src/cpmkey.c \
	src/gui.c \
	src/input.c \
    src/cpmconio.c

OBJS = $(SRCS:$(SRCDIR)/%.c=$(OBJDIR)/%.o)

INCLUDES = -Iinclude
CFLAGS = -compiler=sdcc -pragma-define:CRT_HEAP_AMALLOC=1

# This just provides the conventional target name "all"; it is optional
# Note: I assume you set PNAME via some means not exhibited in your original file
all: $(PNAME)

# How to build the overall program
$(PNAME): $(MAINSRC) $(OBJS)
	$(CC) $(CFLAGS) $(INCLUDES) $(MAINSRC) $(OBJS) -create-app -o$(BINDIR)/$(PNAME).com

$(OBJDIR)/%.o: $(SRCDIR)/%.c
	$(CC) $(CFLAGS) $(INCLUDES) -o $@ -c $<

#$(CC) $(CFLAGS) $(INCLUDES) -o $@ -c $<
# Suffixes appearing in suffix rules we care about.
# Necessary because .rel is not one of the standard suffixes.
.SUFFIXES: .c .o

clean:
	$(RM) $(OBJDIR)/*.o $(BINDIR)/*.com $(SRCDIR)/*.asm
I had this problem when I had a global variable, so I put it in static and the error had disappeared, but I can't put main in static (static int main(void))

Thanks for your help.
andromeda92
Member
Posts: 67
Joined: Wed Apr 17, 2024 1:05 am

RESOLVED Re: error: duplicate definition: cmnuvga_c::_main

Post by andromeda92 »

I resolved all problems on prev post.
Post Reply