Visual Studio 에서 작성한 프로그램을 다른 PC에서 실행하려고 할 때 .dll 이 없어 실행할 수 없다는 에러가 발생한다.
이유 : Visual Studio 프로젝트의 기본 설정값이 "동적 라이브러리" 링크로 설정되어 있기때문에, 실행파일(.exe)에 해당하는 dll 라이브러리가 포함 안되어 있어고 라이브러리(.dll) 파일도 없어서 참조하지 못하는 에러이다.
Visual Stdio 에서 콘솔 프로그램을 만들때 "정적 라이브러리" 방식으로 컴파일하면 프로그램 용량이 늘어날 수 있지만 dll 오류를 방지할 수 있다.
방법1
프로젝트 우클릭 - 속성 - 구성 속성 - 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에 의존하지 않고 항상 프로그램이 동작한다.
방법2
실행할 PC에 재배포 가능 패키지를 설치한다. (dll 파일 검색해서 설치하면 된다.)
참고 :
https://giyatto.tistory.com/41
'개발도구' 카테고리의 다른 글
Visual Studio ] inet_addr 에러 발생 시 (0) | 2022.12.14 |
---|---|
Visual Studio ] 디버깅 시에 argument 넘기도록 설정하기 (0) | 2022.12.14 |
용량이 큰 USB를 FAT 또는 FAT32 로 포맷하는 방법 (0) | 2022.12.13 |
티스토리 ] 코드블럭 라인 번호 매기기 (0) | 2022.12.11 |
Windows ] 송수신 테스트용 더미파일 만들기 (0) | 2022.11.15 |