GuardnetThread.cpp에서 UnitMain.h을 Include하는 것은
MainForm의 포인터인 frmMain 변수를 받아오기 위함입니다. MainForm에 접근하기 위해서..
/////////////////////////////////////
// UnitMain.h
#include
..
class TfrmMain : public TForm
{
...
};
extern PACKAGE TfrmMain *frmMain; // 이 포인터를 받아오기 위해서임.
UnitMain.h 파일을 include하지 않고, TfrmMain *frmMain을 Reference할 수 있는 방법이 있을까요?
단단한돌 님이 쓰신 글 :
: Component간 Conflict가 발생해서 며칠째 개고생 중입니다.
: 파일들을 따라가 보니 하나의 헤더 파일을 제외하면 성공할 것 같은데요..
:
:
/////////////////////////////////////
: // UnitMain.h
: #include
: #include "SBSimpleSftp.hpp" // GuardnetThread.cpp에서 include에서 제외해하하는 파일
: ..
:
: /////////////////////////////////////
: // GuardnetThread.cpp
: #include "GuardnetThread.h"
: #include "UnitMain.h" // UnitMain.h을 include함. => Conflict 발생..
: #include // Routing 정보
: #pragma comment(lib, "iphlpapi.lib")
:
: GuardnetThread.cpp에서 UnitMain.h 파일을 include하는데,
: UnitMain.h파일의 "SBSimpleSftp.hpp" 파일과 GuardnetThread.cpp에서 include한
: <iphlpapi.h>파일이 Conflict가 발생합니다.
:
: 보통 Header file의 Dependency 때문에 문제가 발생하면,
: Include 순서를 바꾸거나, Build Order를 조정해서 해결하는데..
: 두 파일의 include 순서를 바꾸거나, Build Order를 바꿔도 마찬가지거나,
: 또다른 엄청난 Compile Error를 만들어 냅니다.
:
: 최종적으로 찾아낸 것이 <<iphlpapi.h>과 "SBSimpleSftp.hpp" 가 서로 충돌하는 상황입니다.
: GuardnetThread.cpp 에서 UnitMain.h를 Include할 때 "SBSimpleSftp.hpp" 파일만 include에서
: 제외하고 싶습니다. 그러면, 이 지난했던 문제가 해결될 것 같습니다.
:
: 결론적으로,
: 어떤 소스 파일(GuardnetThread.cpp)을 컴파일하면서,
: 이 파일이 Include 하는 파일(UnitMain.h)에서 특정 include file("SBSimpleSftp.hpp")만 Include를 제외시키고
: 싶습니다.
:
: 이런 것이 가능할까요?
:
: #pragma syntax을 뒤져봤는데.. 흔히 쓰는 hdrstop, comment, link 정도는 알겠는데..
: 다른 옵션들은 도통 이해가 가지 않네요.
:
: Incldue 하면서 특정 파일만 include에서 제외하는 것이 가능할까요?
:
: 아래는 Error Text입니다.
:
:
[bcc32 Error] mprapi.h(1273): E2015 Ambiguity between 'CERT_NAME_BLOB' and 'Sbwincrypt::CERT_NAME_BLOB'
: Full parser context
: GuardnetThread.cpp(16): #include c:\program files (x86)\embarcadero\rad studio\12.0\include\windows\sdk\iphlpapi.h
: iphlpapi.h(34): #include c:\program files (x86)\embarcadero\rad studio\12.0\include\windows\sdk\iprtrmib.h
: iprtrmib.h(38): #include c:\program files (x86)\embarcadero\rad studio\12.0\include\windows\sdk\mprapi.h
: mprapi.h(1266): class _IKEV2_TUNNEL_CONFIG_PARAMS
: [bcc32 Error] mprapi.h(1309): E2015 Ambiguity between 'CRYPT_HASH_BLOB' and 'Sbwincrypt::CRYPT_HASH_BLOB'
: Full parser context
: GuardnetThread.cpp(16): #include c:\program files (x86)\embarcadero\rad studio\12.0\include\windows\sdk\iphlpapi.h
: iphlpapi.h(34): #include c:\program files (x86)\embarcadero\rad studio\12.0\include\windows\sdk\iprtrmib.h
: iprtrmib.h(38): #include c:\program files (x86)\embarcadero\rad studio\12.0\include\windows\sdk\mprapi.h
: mprapi.h(1306): class _SSTP_CERT_INFO
:
: 고수님들의 도움을...~~!!
: 감사합니다.~!!
:
:
: