제 목 10강 컴파일 오류발생 문의드립니다
작성자 김병호 등록날짜 2022-06-25 12:09:20 / 조회수 : 21
강좌명 [패키지] 다이렉트X 11 2D Part 1 ~ 4 패키지
첨부파일
  • 사용 VS버전은 2022 17.2.4입니다.

     

    코드 문법상 오류는 감지되지 않는데

    첨부된 스크린샷처럼 디버깅 실행을 실시하면 오류가 발생하면서 컴파일이 중단됩니다

    &에 L-Value가 있어야한다고 하는데요

    혹시나 몰라서 선생님의 예제로도 돌려봤는데 동일한 오류가 발생하더라구요

    버전이 달라져서인지 해결방법이 있는지 궁금합니다

  • 작성자 : 게임클래스 / 등록날짜 : 2022-06-28 17:44:37
  • 안녕하세요 게임클래스 입니다.

    해당 스크린샷을 보았는데요 L-value(구분의 편의상 대문자로작성할께요)와 R-value의 차이에 대한 이해에 도움을 드려야 할 것 같습니다.

    예를들어

    int a;

    a = 0;

    이라고 변수를 선언하고 값을 대입했을때.

    a를 L-value , 0을 R-value라고 합니다.

    C2102 에러의 경우 MSDN에서 찾아보면 ['연산자 주소( & )에 피연산자로 l 값이 있어야 합니다.]

    라는 에러는 L-value로 넣어줘야 되는경우가 있습니다.

    D3DXMatrixLookAtLH 함수의 D3DXVECTOR3의 주소가 들어가는 3개 인자값을 L-value로 변환하여 넣어보시면 좋을것 같습니다.

    Ex>

    D3DXVECTOR3 View2 = { 0, 0, 0 };

    D3DXVECTOR3 View3( 0, 0, 0 );

    D3DXMatrixLookAtLH(&View, &View2, &View3, &View4)

    와 같은 방식으로 진행해 보시면 될것 같습니다.

    .다른방법으로는 준수모드라는 것이 있습니다.

    l-value 에러는 vs2019 16 8 부터 적용된 정합성 경고 때문인데요.

    다음과 같은 방법으로 준수모드를 끄면 문제 없으나 메모리 관리에 능숙하지 않다면 추천하지 않는 방법입니다.

    프로젝트 우클릭을 통하여 속성으로 들어가신다음에

    구성속성 -> 문자 집합 -> 유니코드 문자 집합 사용으로 변경

    구성속성 -> C/C++ -> 언어 -> 준수모드 -> 아니오/permissive로 변경 

    이렇게 2개를 세팅해 주시면 해당 에러 없이 가능 합니다.

    감사합니다~