[VisualStudio2022 / # exe 파일 .dll 오류 ]

SeungWoo·2025년 5월 14일

[How to use Tools]

목록 보기
6/6
post-thumbnail
MSVCP140D.dll,
VCRUNTIME140_1D.dll,
VCRUNTIME140D.dll,
ucrtbased.dll 코드 파일이없어 실행 불가 
  • 문제 : Visual Studio 에서 작성한 프로그램을 다른 PC에서 실행하려고 할 때 .dll 이 없어 실행할 수 없다는 에러가 발생한다.

  • 문제 분석

    • Visual Studio 프로젝트의 기본 설정값이 "동적 라이브러리" 링크로 설정되어 있기때문에, 실행파일(.exe)에 해당하는 dll 라이브러리가 포함 안되어 있었고, 라이브러리(.dll) 파일도 없어서 참조하지 못하는 에러이다.
    • Visual Stdio 에서 콘솔 프로그램을 만들때 "정적 라이브러리" 방식으로 컴파일하면 프로그램 용량이 늘어날 수 있지만 dll 오류를 방지할 수 있다.
  • 해결 방안
    Visual Studio 없이도, 그리고 “D”가 붙은 디버그 전용 DLL 없이도 실행 가능한 EXE를 만드는 방법
    • CRT(C 런타임)를 정적 링크(/MT)로 변경
  • CRT(C 런타임)를 정적 링크(/MT)로 변경 하는법
    • 프로젝트 우클릭 - 속성 - 구성 속성 - C/C++ - 코드생성
    • 런타임 라이브러리 항목을 debug, release 모드에 맞게 다음과 같이 변경한다.
      • Debug : 다중 스레드 디버그 DLL (/MDd) 에서 다중 스레드 디버그 (/MTd)로 변경
      • Release : 다중 스레드 DLL (/MD) 에서 다중 스레드 (/MT)로 변경
    • 컴파일을 다시 하면, exe 파일에 dll이 포함되어 다른 PC에서 바로 실행시킬 수 있다.

/MD 와 /MT 옵션의 차이는 CRT(C런타임 라이브러리)의 연결방식이다.

  • /MD (Multi-Threaded DLL)
    • C 런타임 라이브러리를 별도의 dll로 동적으로 링킹해 사용하는 옵션이다.
    • 실행 파일에 CRT 라이브러리가 포함되지 않기 때문에 파일 사이즈가 작아지지만, 대상 시스템에 CRT dll이 없는 경우 프로그램이 동작하지 않는다.
  • /MT (Multi-Threaded)
    • C 런타임 라이브러리를 실행 파일내 포함시키는 정적 링킹 옵션이다.
    • 실행파일의 크기가 커지지만 대상 시스템에 설치된 dll에 의존하지 않고 항상 프로그램이 동작한다.

  • 해결
    • 리빌드 & 결과 확인
    • Build → Rebuild Solution 또는 Ctrl+Shift+B
    • 빌드 로그에서 /MT 옵션이 포함되어 있는지 확인
profile
This is my study archive

0개의 댓글