C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[74673] SBSimpleSftp.hpp, Sbwincrypt.hpp 파일도 올려 놓았습니다. 제발 해결이 되기를...~~!!
단단한돌 [heaven2] 3364 읽음    2017-11-23 17:29
SBSimpleSftp.hpp, Sbwincrypt.hpp 파일도 올려 놓았습니다. 제발 해결이 되기를...~~!!

님이 쓰신 글 :
: Sbwincrypt.hpp 파일도 업로드 해야할 듯 한데요
:
:
: 단단한돌 님이 쓰신 글 :
: : 환경: C++ Builder XE5
: :
: : 사용 Component:
: :   - UI Component   : Button, Panel, TImage, TListView,.... 화면 UI Component들..
: :   - Indy Compnent  : IndyFTP, IndyTCPServer, IndyTCPClient
: :   - SFTP Component : SecureBlackBox SFTP Component (상용)
: :
: : 기존의 프로젝트에 SFTP(SecureFTP) 기능이 필요하여 SecureBlackBox라는 Component를 추가하였습니다.
: : 추가한 Compnent가 기존 프로텍트의 Library와 여기저기 충돌을 일으켜서 다량의 Compile Error를 만들어 냅니다.
: : Build Order와 Include 순서를 조정해서 Compile Error를 잡았는데, 이것 하나만은 끈질기게 해결이 되지 않고 있습니다.
: :
: : 에러 메세지를 보면 CERT_NAME_BLOB 라는 이름이 SecureBlackBox Component(SbwinCrypt.hpp)에서 정의되고,
: : Windows SDK의 Header 파일인 <iphjlpapi.h>에서도 정의되어 사용되고 있습니다.
: : <iphlpapi.h> 파일은 시스템의 라우팅 정보를 가져오는 함수들이 정의되어 있습니다.
: : 이 두개의 Header 모두 프로그램 운영에는 필요한 상태입니다.
: :
: : 에러를 보면 GardnetThread.cpp의 컴파일 과정에서 <iphlpapi.h>을 include 하기 전에,
: : "UnitMain.h"를 Include하게 되는데, 그 안에서 "SBSimpleSftp.hpp"를 include 하게 되고,
: : "SBSimpleSftp.hpp"의 include를 따라 가서 "Sbwincrypt.hpp"까지 include하게 되는데,
: : "Sbwincrypt.hpp"의 내용이 <iphlpapi.h>에서 include하는 <mprapi.h>의 선언부와 충돌됩니다.
: :
: : 'CERT_NAME_BLOB','CRYPT_HASH_BLOB' 이 두 개의 이름이 중복된다는 결론입니다.
: :
: : 이 두개의 include 순서를 뒤바꾸면, 더 엄청난 Compile error가 튀어 나옵니다.
: :
: : 충돌을 회피할 수 있는 방법은 어떤 것이 있을까요?
: :
: : 2주째 이 문제로 씨름 중입니다. Help~~~~!!
: :
: : [부언 설명]
: : GardnetThread.cpp -----------> UnitMain.h ------------->SBSimpleSftp.hpp
: : (iphlpapi.h include)                                    (Sbwincrypt.hpp include)
: :
: : - <iphlpapi.h> --> include --> <mprapi.h>
: : - <SBSimpleSftp.hpp> --> include --> <Sbwincrypt.hpp> 두 개의 파일에서 충돌..
: :
: :
: : //------------------------------------------------------------------------
: : // compile error 내용 
: : [bcc32 Error] mprapi.h(1273): E2015 Ambiguity between 'CERT_NAME_BLOB' and 'Sbwincrypt::CERT_NAME_BLOB'
: :   Full parser context
: :     GuardnetThread.cpp(13): #include c:\program files (x86)\embarcadero\rad studio\12.0\include\windows\sdk\iphlpapi.h   // 이  Header 파일이 문제를 발생
: :     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(13): #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
: : 
: : //------------------------------------------------------------------------
: : // 파일의 내용
: : $Embacadero_HOME\rad studio\12.0\include\windows\sdk\mprapi.h
: : ..
: : typedef struct _IKEV2_TUNNEL_CONFIG_PARAMS {
: :     DWORD                       dwIdleTimeout;
: :     DWORD                       dwNetworkBlackoutTime;
: :     DWORD                       dwSaLifeTime;
: :     DWORD                       dwSaDataSizeForRenegotiation;
: :     DWORD                       dwConfigOptions;
: :     DWORD 	                dwTotalCertificates;
: :     CERT_NAME_BLOB *            certificateNames;           // conflict 발생, 정의는 그전에 있음. 
: : }IKEV2_TUNNEL_CONFIG_PARAMS, *PIKEV2_TUNNEL_CONFIG_PARAMS;
: : 
: : 
: : //------------------------------------------------------------------------
: : //  파일의 내용 
: : $SecureBlackBox_HOME\Units\CBuilderXE5\SbwinCrypt.hpp
: : 
: : ...
: : typedef CRYPTOAPI_BLOB CERT_NAME_BLOB;     // Conflict 발생 
: : typedef CRYPTOAPI_BLOB *PCERT_NAME_BLOB;
: : ...
: : 
: : //=======================================================================
: : //  include 관계
: : #include 
: : #pragma hdrstop
: : 
: : #include "GuardnetThread.h"
: : #include "UnitMain.h"        // UnitMain.h에서  SecureBlackBox SFTP Component include함. 
: : #include "LockeCommon.h"
: : #include "Env.h"
: : #include "Thrdqueue.h"
: : 
: : #include         // conflict 발생.. 
: : #pragma comment(lib, "iphlpapi.lib")
: : #pragma package(smart_init)
: : 
: : TGuardnetThread *thrdGuardnet;
: : ...
: : 
: : //=======================================================================
: : // UnitMain.h 파일의 include 관계
: : #ifndef UnitMainH
: : #define UnitMainH
: : 
: : #include 
: : #include 
: : #include 
: : #include 
: : ...// VCL Library Header 
: : 
: : #include "SBSimpleSftp.hpp"     // SecureBlackBox SFTP Component include
: :                                 // Indy Component 뒤에서 Include 하면 또다른 compile error 
: : #include 
: : #include 
: : #include 
: : #include 
: : ...//Indy Library Header
: : #include 
: : ...// DBExpress Header 
: : 
: : #include "AdPort.hpp"
: : #include "OoMisc.hpp"
: : ...// other header include
: : 

: :
: : namespace를 지정하여 해결하는 방법이 있을까요?
: :
: :

+ -

관련 글 리스트
74671 [질문] E2015 Ambiguity between 'CERT_NAME_BLOB' and 'Sbwincrypt::CERT_NAME_BLOB' 다시 정리.. 단단한돌 3399 2017/11/22
74672     Re:[질문] E2015 Ambiguity between 'CERT_NAME_BLOB' and 'Sbwincrypt::CERT_NAME_BLOB' 다시 정리.. 3611 2017/11/23
74673         SBSimpleSftp.hpp, Sbwincrypt.hpp 파일도 올려 놓았습니다. 제발 해결이 되기를...~~!! 단단한돌 3364 2017/11/23
74676             Re:SBSimpleSftp.hpp, Sbwincrypt.hpp 파일도 올려 놓았습니다. 제발 해결이 되기를...~~!! 3390 2017/11/24
74677                 다시 올려 놓았습니다. 감사합니다.~! 단단한돌 3644 2017/11/24
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.