【发布时间】:2009-11-26 02:30:19
【问题描述】:
我正在尝试编译一些 c++ 文件。我在链接阶段(正在编译)遇到以下类型的错误 -
Main.o: In function operator<<(std::basic_ostream<char, std::char_traits<char> >&,
Set const&)':
/usr/include/c++/4.3/new:105: multiple definition ofoperator<<(std::basic_ostream<
char, std::char_traits >&, Set const&)'
bundleXX.o:/xxx/DATASTRUCTURES/SET/set.h:162: first defined h
ere
Main.o: In function print(std::basic_string<char, std::char_traits<char>, std::allo
cator<char> >, int)':
/xxx/misc.h:28: multiple definition ofprint(std::basic_string, std::allocator >, int)'
bundleXX.o:/xxx/misc.h:28: first defined here
此代码之前链接正确。只有当我尝试将此代码与其他一些代码接口时,才会出现问题。
我的 makefile 是这样的:-
Makefile
SRC = Main.C Bundle.C bundleXX.C BMinQuad.C MinQuad.C QPBundle.C
OBJ = Main.o Bundle.o MinQuad.o BMinQuad.o QPBundle.o bundleXX.o general_includes.o
CCC = g++
EXE = main
OPT = -O3 -fomit-frame-pointer -fno-strict-aliasing
DEBUG = -g -DDEBUG
IFLAGS = -I /xxx/ -I /xxx/DATASTRUCTURES/HEAP/ -I /xxx/DATASTRUCTURES/
LFLAGS = -lm
Main.o: $(SRC)
$(CCC) $(DEBUG) $(LFLAGS) -I /xxx/ -I /xxx/DATASTRUCTURES/ -c $(SRC)
main: $(OBJ)
$(CCC) $(OBJ) -I /xxx/ -I /xxx/DATASTRUCTURES/ -o $(EXE)
/bin/rm -rf main.o
clean:
/bin/rm -rf main.o
/bin/rm -rf $(EXE)
touch out.out
/bin/rm -rf *.out
我将不胜感激。
谢谢
编辑:我尝试过内联,但没有奏效。我终于最小化了我在新代码中包含我的代码的次数,并且它最终正确链接。我认为这可能是递归包含的情况。不过感谢您的帮助。
【问题讨论】:
标签: c++ g++ linker compiler-errors