강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của alwjw6984
alwjw6984

câu hỏi đã được viết

[Tuyển tập phát triển game MMORPG bằng C++ và Unreal] Phần 2: Toán học game và DirectX12

Đặt lại thiết bị

C++ 언어 표준과 Engine.lib 오류에 관하여..

Viết

·

254

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++ 초안 기능을 사용하여 구조체 초기화 사용을 유지 한 채 실행할 수 있는 방법이 있을까요 ?

directx게임수학

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

alwjw님의 프로필 이미지
alwjw
Người đặt câu hỏi

질문에 대한 해답이 Texture Mapping 강의에 나오는 것으로 확인했습니다. 해결완료 했습니다.

Hình ảnh hồ sơ của alwjw6984
alwjw6984

câu hỏi đã được viết

Đặt câu hỏi