의외로 이런 실수를 하시는 분들이 많네요..
해더파일에 변수(클래스의 인스턴스)를 선언하게 되면
해당 해더를 include할 때마다 선언이 중복적으로 되기 때문에 문제가 발생됩니다.
문제가 되는 것은 아래 선언부 때문입니다.
list<Civil3DLogData_h>Civil3DLogDataList; // STL list 에 요소별 입력된것
Civil3DLogData_h Civil3DLogDataInput; // STL list 에 요소별로 입력할 자료단위
글로벌로 사용하고자 한다면, 선언은 cpp 에서 한곳에서만 하고
해더파일에는 extern으로 선언하여 사용하면 됩니다.
Main.h
extern Civil3DLogData_h * Civil3DLogDataInput;
Main.cpp
Civil3DLogData_h *Civil3DLogDataInput;
Civil3DLogDataInput = new Civil3DLogData_h;
이런 식으로....
뽀뽀중 님이 쓰신 글 :
: 전역 변수, 클래스 를 하나의 헤더 화일에 작성 하였습니다.
:
: 그리고 이 헤더 화일을 각각의 화일에서 #include 했는데,
:
: Class 화일 중복이 발생했다는 경고가 발생 합니다.
:
: 어떻게 해결 해야 하나요??
:
: 코드 작성은 아래와 같이 했습니다.
:
:
: Main.h 화일
:
:
: class Civil3DLogData_h {
: // Civil 3D 로그 class
:
: public:
: AnsiString AsAddChainLength; // 정체인, 추가체인
: AnsiString AsCrossSectionEa; // 타점갯수
: vectorPointX; // X좌표
: vectorPointZ; // Y좌표
: int IntTotalCivil3dRowEa; // 전체갯수
:
: private:
:
: };
:
: // Civil3DLogData 데이터 입력 list
: listCivil3DLogDataList; // STL list 에 요소별 입력된것
: Civil3DLogData_h Civil3DLogDataInput; // STL list 에 요소별로 입력할 자료단위
:
:
:
: 그리고 다른 헤더 화일에서는
:
: Survey.h 헤더화일
:
:
: #ifndef SurveyH
: #define SurveyH
:
: #include "Main.h"
:
: #endif
:
:
: 이런 방식으로 여러 헤더 화일에서, Main.h 헤더 화일을 #include 하였습니다.
:
:
: 경고는 Main.h 화일을 include 한 각각의 헤더 화일 마다 경고가 발생합니다.
: 이는 class 가 중복되어서 발생하는것 같은데, 어떻게 수정을 해야 하나요???
:
: 아래는 경고 메세지 입니다.
:
: Checking project dependencies...
: Compiling WaterGRID.cbproj (Release configuration)
: [BCC32 Warning] Main.h(186): W8058 Cannot create pre-compiled header: initialized data in header
: [ILINK32 Warning] Warning: Public symbol '_HecRasDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasSaveDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasSaveDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasSaveDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasSaveDataOutput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasSaveDataOutput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasSaveDataOutput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_Civil3DLogDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ
: [ILINK32 Warning] Warning: Public symbol '_Civil3DLogDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_Civil3DLogDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_Civil3DLogDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ
: [ILINK32 Warning] Warning: Public symbol '_Civil3DLogDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_Civil3DLogDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_DataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ
: [ILINK32 Warning] Warning: Public symbol '_DataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_DataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_SurveyDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ
: [ILINK32 Warning] Warning: Public symbol '_SurveyDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_SurveyDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\MAIN.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasSaveDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasSaveDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasSaveDataOutput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasSaveDataOutput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_Civil3DLogDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_Civil3DLogDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_Civil3DLogDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_Civil3DLogDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_DataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_DataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_SurveyDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ
: [ILINK32 Warning] Warning: Public symbol '_SurveyDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\DXFWRITE.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasSaveDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_HecRasSaveDataOutput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_Civil3DLogDataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_Civil3DLogDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_DataList' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: [ILINK32 Warning] Warning: Public symbol '_SurveyDataInput' defined in both module C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\SURVEY.OBJ and C:\USERS\KISSJUNG\DOCUMENTS\RAD STUDIO\PROJECTS\WATERGRID\RELEASE\HECRAS.OBJ
: Success
: Elapsed time: 00:00:47.5