obj/main_exec.o: In function `std::ctype<char>::do_widen(char) const':
/home/aj/Documents/02_AJ_Research/13_Striker/ext/SimuFlow_1.0/src/configmod.cpp:7: multiple definition of `ty_conf::setconf_fromfile(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >*, int*, int*)'
obj/configmod.o:/home/aj/Documents/02_AJ_Research/13_Striker/ext/SimuFlow_1.0/src/configmod.cpp:7: first defined here
Существует заголовочный файл с классом, и существует публичное c объявление функции: при компиляции файл config.o
говорит, что функция уже определена в config.cpp
. Почему это вызывает ошибку компоновщика?
Информация ty_Conf
- это класс, определенный в заголовке: все внутри публикуется c, включая объявление функции: setconf_fromfile(...);
Определение функции находится в configmod.cpp
обращаюсь за помощью по этому поводу
Ниже приведены мои команды Makefile:
**# object list
HOBJ = $(OBJ_DIR)/allvariables.o\
OBJS = $(OBJ_DIR)/linker.o\
$(OBJ_DIR)/configmod.o\
EXEC = $(OBJ_DIR)/flus_exec.o
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.hpp
$(CPP) -c $< -o $@ $(FFLAGS) $(IFLAGS) #$(CFLAGS)
$(OBJ_DIR)/%.o: $(SRC_DIR)/%.cpp
$(CPP) -c $< -o $@ $(FFLAGS) $(IFLAGS) #$(CFLAGS)
.PHONY: all build externals clean distclean
all: externals build
build: $(HOBJ) $(OBJS) $(EXEC)
$(CPP) -o $(BIN_DIR)/$(EXE) $(OBJS) $(EXEC) $(FFLAGS) $(LFLAGS)**