자유롭게 질의 및 응답을 할 수 있는 게시판입니다. 개발자 여러분의 답변이 큰 도움이 됩니다.
- 제품설치/등록 오류 문의: 설치/등록 Q&A 이용 (제품 구매 고객 한정)
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
Use 'classic' Borland compiler 를 false 로 하고 컴파일을 하면
[bcc32c Error] GdiplusPath.h(146): reference to 'byte' is ambiguous
rpcndr.h(197): candidate found by name lookup is 'byte'
stddef.h(258): candidate found by name lookup is 'std::byte'
GdiplusPath.h 파일의 146번째 라인에서 에러가 발생 합니다.
146번 라인 입니다. ==>> pathData->Types = new byte[count];
인터넷 검색을 해보니 c++ 17 의 문제 인것 같은데,
어떻게 에러 수정을 하나요?
댓글 2
-
김원경
2019.11.18 13:24
-
하루
2019.11.26 16:31
알려 주신 링크를 열심히 읽어 보았는데, 경우에 따라서 되는 경우도 있고 안되는 경우도 있는듯 합니다.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0298r3.pdf
를 참고햇습니다.
우선 에러가 발생한 GdiplusPath.h 146번 라인 pathData->Types = new byte[count]; 를 pathData->Types = new ::byte[count]; 로 수정 했습니다.
다시 컴파일 하면 에러가 약 100여개 발생하는데, 발생한 모든 곳을 byte 를 ::byte로 변경하니 컴파일이 되었습니다.
과연 잘 한것인지, 다른 문제 발생은 없는 것인지 확인은 못했습니다.
본 게시판은 개발자들이 자유롭게 질문과 답변을 공유하는 게시판입니다.
* 따라서 최대한 정중하게 질문을 올려 주세요.
* 질문을 상세히 작성해 주실 수록 좋은 답변이 올라 옵니다.
* 다른 분들도 참고할 수 있도록 결과 댓글 필수(또는 감사 댓글)
(결과 댓글을 달지 않는 경우 다음 질문에 대한 답변이 달리지 않는 불이익이 있을 수 있습니다.)
-----------------------------------------------------------------------------------------------
Use 'classic' Borland compiler 를 false 로 하고 컴파일을 하면
[bcc32c Error] GdiplusPath.h(146): reference to 'byte' is ambiguous
rpcndr.h(197): candidate found by name lookup is 'byte'
stddef.h(258): candidate found by name lookup is 'std::byte'
GdiplusPath.h 파일의 146번째 라인에서 에러가 발생 합니다.
146번 라인 입니다. ==>> pathData->Types = new byte[count];
인터넷 검색을 해보니 c++ 17 의 문제 인것 같은데,
어떻게 에러 수정을 하나요?
댓글 2
-
김원경
2019.11.18 13:24
-
하루
2019.11.26 16:31
알려 주신 링크를 열심히 읽어 보았는데, 경우에 따라서 되는 경우도 있고 안되는 경우도 있는듯 합니다.
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0298r3.pdf
를 참고햇습니다.
우선 에러가 발생한 GdiplusPath.h 146번 라인 pathData->Types = new byte[count]; 를 pathData->Types = new ::byte[count]; 로 수정 했습니다.
다시 컴파일 하면 에러가 약 100여개 발생하는데, 발생한 모든 곳을 byte 를 ::byte로 변경하니 컴파일이 되었습니다.
과연 잘 한것인지, 다른 문제 발생은 없는 것인지 확인은 못했습니다.
"/ std : c ++ 17"을 사용하는 경우에만 발생합니다. "/ std : c ++ 14"까지는 문제가 없습니다. "std :: byte"가 c ++ 17에 추가 되었기 때문입니다. "네임 스페이스 std를 사용하는 경우"도 마찬가지입니다. 문제가되는 Windows 헤더보다 먼저 선언됩니다.
아래 주소를 참조하시면 몇가지 해결 방법들이 소개 되어 있습니다. 참조하시기 바랍니다.
https://developercommunity.visualstudio.com/content/problem/93889/error-c2872-byte-ambiguous-symbol.html
예를 들면 해결 방법중 하가지 방법입니다. 그 외에도 몇 가지 방법들이 소개 되어 있습니다.
#define _HAS_STD_BYTE 0
이렇게하면 VS 2017에서 구현 된 '바이트'유형을 효과적으로 비활성화 할 수 있습니다.이 방법은 코드 전체에서 '바이트'인스턴스를 사용하지 않고 유사한 문제가있는 경우에만 작동합니다.