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
[74663] Re: E2015 Ambiguity between 'CERT_NAME_BLOB' and 'Sbwincrypt::CERT_NAME_BLOB'
빌더(TWx) [builder] 3404 읽음    2017-11-16 21:16
단단한돌 님이 쓰신 글 :
: 환경: C++ Builder XE5
:
: CERT_NAME_BLOB가 양쪽에서 정의되어 있는데 모호하다.
: 에러의 내용은 알겠는데.. 어떻게 해결해 할 지 모르겠네요.
:
: $Embarcadero_HOME\include\windows\sdk\mprapi.h
: $SecureBlackBox_HOME\Sbwincrypt.hpp
:
: 두 해더 간의 Conflict이고, 개발한 코드에는 CERT_NAME_BLOB은 사용되지 않았습니다.
: mprapi.h는 namespace 에 대한 코드도 없네요.
:
: 이러한 경우 어떻게 해야 할 지요?
:
:
: //wincrypt.h
: typedef struct _CRYPTOAPI_BLOB {
:                             DWORD   cbData;
:     __field_bcount(cbData)  BYTE    *pbData;
: } CRYPT_INTEGER_BLOB, *PCRYPT_INTEGER_BLOB,
: CRYPT_UINT_BLOB, *PCRYPT_UINT_BLOB,
: CRYPT_OBJID_BLOB, *PCRYPT_OBJID_BLOB,
: CERT_NAME_BLOB, *PCERT_NAME_BLOB,      // 정의됨
: 
: // mprapi.h
: typedef struct _IKEV2_TUNNEL_CONFIG_PARAMS {
:     //some code ....
:     CERT_NAME_BLOB *            certificateNames;   // 사용됨. 
: }IKEV2_TUNNEL_CONFIG_PARAMS, *PIKEV2_TUNNEL_CONFIG_PARAMS;
: 
: //Sbwincrypt.hpp
: typedef CRYPTOAPI_BLOB CERT_NAME_BLOB;   // CERT_NAME_BLOB conflict
: 

:
: wincrypt.h에서 정의되고 mprapi.h에서 사용되었는데,
: Sbwincrypt.hpp에서 다시 정의되어 컴파일러가 모호하다는 메세지...
:
: mprapi.h을 include한 소스는 GuardnetThread.cpp
: Sbwincrypt.hpp을 include한 소스는 UnitMain.cpp
:
: UnitMain.cpp는 GuardnetThread.h을 include하고,
: GuardnetThread.cpp는 UnitMain.h를 include합니다.
: #ifndef ... #pragma hdrstop 한번만 로드되게, 프리 컴파일되게 등  헤더 Include되는 위치를 이리저리 옮겨도
: 안되네요.. 어찌 해결해야 할 지... ?
:
: 고수님들의 지도를 바랍니다.
: 감사합니다.
:
: 아래는 컴파일러의 에러 메세지...
:
: // 컴파일 에러 내용..
: [bcc32 Error] mprapi.h(1273): E2015 Ambiguity between 'CERT_NAME_BLOB' and 'Sbwincrypt::CERT_NAME_BLOB'
:   Full parser context
:     GuardnetThread.cpp(14): #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
: 

:
: http://cbuilder.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_faq&no=37
: http://www.borlandforum.com/impboard/impboard.dll?action=read&db=bcb_qna&no=4881
:
: 두 개의 링크에서 확인해 보았는데.. 도움이 .. ㅠ.ㅠ;;
: 소스 코드에서는 Conflict된 이름을 사용하지 않습니다. 고친다면 Header 파일을 고쳐야 하는 지?....
:
:
: //GuardnetThread.cpp   =>  Guardnet Thread 
: //---------------------------------------------------------------------------
: #include 
: #pragma hdrstop
: 
: #include "GuardnetThread.h"
: #include "UnitMain.h"
: // ... some header include 
: 
: #pragma package(smart_init)
: #include                      // => 문제의 Header file include됨 
: #pragma comment(lib, "iphlpapi.lib")
: 
: 
: // UnitMain.cpp  // MainForm 
: //---------------------------------------------------------------------------
: #include 
: #pragma hdrstop
: 
: #include "UnitMain.h"
: #include "GuardnetThread.h"
: // ... some header include 
: 

:
: 고수님.. Help....
:
:


답변:


프로젝트 전체 파일을 업로드 하지 않고 질문에 언급되어 있는 내용만으로는
디펜던시 관계를 확정할 수 없습니다.

+ -

관련 글 리스트
74659 [질문] E2015 Ambiguity between 'CERT_NAME_BLOB' and 'Sbwincrypt::CERT_NAME_BLOB' 단단한돌 3404 2017/11/16
74663     Re: E2015 Ambiguity between 'CERT_NAME_BLOB' and 'Sbwincrypt::CERT_NAME_BLOB' 빌더(TWx) 3404 2017/11/16
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.