我有rand.cpp和rand.hpp文件並且有rand_unif()函數。 我已將rand.hpp文件包含在sim_engine.hpp文件中。ld:重複的符號
在main.cpp文件中,我包含了sim_engine.hpp文件。 如果我運行生成文件,然後我得到這個錯誤
ld: duplicate symbol rand_unif() in sim_engine.o and main.o for architecture x86_64
collect2: ld returned 1 exit status
sim_engine.hpp就是包括rand.hpp的唯一地方。 main.cpp不包含rand.hpp,但包含sim_engine.hpp。
我不明白爲什麼我得到重複的符號錯誤。
#mod_simu.make project makefile
mod_simu : main.o rand.o graph.o street.o isection.o vehicle.o event.o FEL.o sim_engine.o clock.o
g++ -o mod_simu main.o rand.o graph.o street.o isection.o vehicle.o event.o FEL.o sim_engine.o clock.o
main.o : main.cpp
g++ -c main.cpp
rand.o : rand.cpp
g++ -c rand.cpp
graph.o : graph.cpp graph.hpp street.hpp isection.hpp
g++ -c graph.cpp
street.o : street.cpp street.hpp
g++ -c street.cpp
isection.o : isection.cpp isection.hpp street.hpp
g++ -c isection.cpp
vehicle.o : vehicle.cpp vehicle.hpp
g++ -c vehicle.cpp
event.o : event.cpp event.hpp
g++ -c event.cpp
FEL.o : FEL.cpp FEL.hpp
g++ -c FEL.cpp
sim_engine.o : sim_engine.cpp sim_engine.hpp
g++ -c sim_engine.cpp
clock.o : clock.cpp clock.hpp
g++ -c clock.cpp
clean:
rm *.o mod_simu
#end
這是我的makefile。
請確保您的頭部包含警衛 – shuttle87 2012-02-15 19:15:13
聽起來像違反了[ODR](http:// stackoverflow。COM /問題/ 4192170 /什麼,恰好是一定義規則,在-C) – Flexo 2012-02-15 19:15:42
在rand.hpp文件我已經的#ifndef _RAND_HPP_ 的#define _RAND_HPP_/#ENDIF衛士 – codereviewanskquestions 2012-02-15 19:17:12