미친해커

Visual Studio 컴파일러에서 msvcrt.dll 사용하기 본문

내 노가다 목록

Visual Studio 컴파일러에서 msvcrt.dll 사용하기

미친해커 2022. 8. 11. 05:55
반응형

기본적으로 Visual Studio의 MSVC로 컴파일을 진행하면 vcruntime140.dll, ucrtbase.dll을 사용하는 것을 확인할 수 있다.

이는 Windows SDK에 있는 라이브러리를 사용하는 것으로 알고 있는데, 해당 DLL을 사용하면 다른 윈도우에서 프로그램을 실행했을 때 ucrtbase.dll과 vcruntime140.dll이 없으면 프로그램이 동작하지 않는 문제가 발생한다.

 

물론 프로그램을 배포할 때 DLL을 함께 배포하면 문제 없지만 이는 반드시 프로그램을 실행하기 전에 DLL을 배포해야 한다는 귀찮음이 존재한다. 하지만 모든 윈도우에는 기본적으로 msvcrt.dll이 존재하고 msvcrt.dll과 ucrtbase.dll, vcruntime140.dll에 있는 함수가 다르지 않다. 버전의 차이로만 알고 있다. 그렇기 때문에 컴파일과 링킹 과정에서 이 두 DLL대신 msvcrt.dll을 사용하면 문제 없이 모든 윈도우에서 사용할 수 있다.

 

먼저 msvcrt.lib 파일을 다운로드 받아야 한다. 기본적으로 포함은 되어 있지만 확인해보니 그냥 껍데기만 있는 파일이라 실제로 사용할 수 있는 msvcrt.lib를 다운로드 받아야 한다.

MSVCRT.zip
2.29MB

[프로젝트 속성] -> [링커] -> [입력] -> [특정 기본 라이브러리 무시] -> libcmt.lib, msvcprt.lib 추가

[프로젝트 속성] -> [링커] -> [입력] -> [추가 종속성] -> msvcrt.lib 추가

 

이렇게 추가해주면 msvcrt.dll 가 링크되어 msvcrt.dll을 사용할 수 있게된다.

반응형
Comments