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
고수님들의 도움을...~~!!
감사합니다.~!!