Cộng đồng Hỏi & Đáp của Inflearn
C++ 언어 표준과 Engine.lib 오류에 관하여..
Viết
·
275
0
안녕하세요. DirectX12 강의를 이제 수강 시작한 학생입니다.
강의에선 C++ 언어 표준을 C++ 14로 사용중입니다.
전, C++ 20을 사용하여 아래와 같이 구조체 초기화를 사용하려 했습니다.
DXGI_SWAP_CHAIN_DESC sd = { .BufferDesc = { .Width = static_cast<uint32>(info.width), .Height = static_cast<uint32>(info.height), .RefreshRate = { .Numerator = 60, .Denominator = 1 }, .Format = DXGI_FORMAT_R8G8B8A8_UNORM, .ScanlineOrdering = DXGI_MODE_SCANLINE_ORDER_UNSPECIFIED, .Scaling = DXGI_MODE_SCALING_UNSPECIFIED }, .SampleDesc = { .Count = 1, .Quality = 0 }, .BufferUsage = DXGI_USAGE_RENDER_TARGET_OUTPUT, .BufferCount = SWAP_CHAIN_BUFFER_COUNT, .OutputWindow = info.hwnd, .Windowed = info.windowed, .SwapEffect = DXGI_SWAP_EFFECT_FLIP_DISCARD, .Flags = DXGI_SWAP_CHAIN_FLAG_ALLOW_MODE_SWITCH };
하지만, C++ 20을 사용하면 Engine 프로젝트 빌드 시, byte << 모호하다는 오류가 나오며, Engine.lib 파일이 Output 폴더 내에서 사라집니다. 억지로 빌드 시킨 후, Client 프로젝트 실행 시 오류가 생깁니다.
C++ 20기준 혹은 미리보기 최신 C++ 초안 기능을 사용하여 구조체 초기화 사용을 유지 한 채 실행할 수 있는 방법이 있을까요 ?
Quiz
윈도우즈 API 기반 게임 프로그램의 주 실행 루프가 콘솔 프로그램과 다른 근본적인 이유는 무엇일까요?
백그라운드에서만 실행되기 때문에
시스템 자원을 최소한으로 사용해야 해서
표준 입출력을 사용하지 않기 때문에
사용자 입력을 기다리지 않고 지속적으로 화면을 업데이트해야 해서
Câu trả lời 2
0
저도 같은 문제가 발생해서 댓글 남겨봅니다.
MS의 Windows 관련 라이브러리에서 typedef를 통해 byte를 정의하고 있는데요, C++17부터 std::byte라는 표준 byte 타입이 추가되어서 이것과 충돌하는 문제가 있습니다.
만약 VS에서 C++ 컴파일러 버전을 17 이상으로 세팅하실 분이라면, 여러 방법이 있는데 저의 경우 가장 먼저 컴파일되는 Engine 정적 라이브러리 프로젝트의 pch 파일 최상단에 아래 키워드를 추가했습니다.
#define _HAS_STD_BYTE 0이러면 std::byte가 무시된다고 합니다 :)
0





