2016-11-22 1 views
0

내가 시도 할 때 나는 2015 년컴파일 된 프로그램은 다른 창에 응답하지 PC의

그러나 비주얼 스튜디오에서 독립 실행으로 모두, 내 PC에 완벽하게 실행 (14) VC++의 프로그램 및 디버깅을 작성했습니다 다른 PC에서 실행하려면 immedietly로 응답하지 않습니다. 디버그 기호를 사용하여 make_unique 또는 make_shared을 통해 클래스의 인스턴스화가 실패하여 널 포인터 예외가 발생했습니다.

대상 컴퓨터에 필요한 vC++ 런타임 환경이 있고 내가 생각할 수있는 다른 dll이 있는지 확인했습니다.

나는 빌드 중에 필요한 라이브러리를 정적으로 연결하려고 시도했지만 개선되지 않았습니다.

나는 추가 의존성이없는 설치 프로젝트를 시도해 보았습니다.

나는 이제 손실에 처해있다. 내가 찾고 있어야 할 것이 있습니까?

+0

컴퓨터에서 원격 디버거를 실행할 수 있습니까? 'make_unique'에 정확히 무엇을 넣고 있습니까? – Dai

+2

대상 플랫폼이 귀하와 동일한 지 확인하십시오. 예를 들어, 64 비트 대 32 비트 – SomeWittyUsername

+0

@Dai 인수가 전달되지 않습니다. m_States [0] = std :: make_unique ();와 같은 기본 인스턴스화입니다. 또는 적어도 그게 디버거가 나타내는 것입니다. 원격 디버깅에 대해 자세히 설명해 주시겠습니까? –

답변

0

다음을 확인하십시오.

  1. 릴리스 빌드를 빌드해야합니다. Visual Studio가 설치되지 않은 PC에서 디버그 빌드를 실행하는 것은 상대적으로 어렵습니다.
  2. 서비스 팩 번호를 포함하여 정확한 버전의 vC++ 14 런타임을 사용하고 있는지 확인하십시오. vs2015 업데이트 3을 사용하는 경우 대상 PC에 https://www.microsoft.com/en-us/download/details.aspx?id=53587 (올바른 플랫폼, 32 또는 64)을 다운로드하여 설치하십시오.
  3. 것은 당신이 당신의 전처리에 재미 아무것도하지 않는 확인 : 당신이 등

P.S. _DEBUG, 아니 _SECURE_SCL을하지 않아도 릴리스 빌드에는 C 런타임에 대한 동적 링크가 필요하지 않습니다. 한 가지 문제는 일부 Windows 버전에서 최신 CRT가 일부 Windows 업데이트에 의존하기 때문에 오프라인 설치 프로그램을 사용하여 필요한 버전으로 CRT를 업데이트 할 수 없다는 것입니다.

+0

나는 릴리스 모드에서 확실히 구축 중입니다. 서비스 팩 번호를 조사해야하지만, 그렇다고 가정하면 대상 시스템에 이것이 설치되어 있는지 확인할 수있는 방법이 있습니까? 그렇지 않은 경우 수정하십시오. 전 전처리기에 NO_SECURE_CRT가 있다고 확신합니다. 이 문제가 발생할 수 있습니까 ?? –

+0

죄송합니다 전처리기에 CRT_SECURE_NO_WARNINGS이 (가) 있습니다. 그 외 모든 것은 표준입니다. –

+0

CRT_SECURE_NO_WARNINGS 전 처리기 지시문이 더 이상 필요하지 않도록 코드를 제거하고 리팩터링했습니다. 거기에 변화가 없지만 참조 머신이 cv ++ 2015 재배포 가능 파일에 약간 뒤떨어져 있다는 것을 알았습니다. 그래서 도움이되는지 확인하기 위해 설치하고 있습니다. –

관련 문제