상황
DLL1을 사용하여 DLL2을 만들고 그것을 테스트하는 프로그램 생성
프로그램 실행 시 Debug 일 경우 오류 발생, Release 일 경우 오류 발생하지 않고 정상 작동.
오류메시지
__acrt_first_block == header
STL을 사용하고 난 이후에 발생
해결법
DLL2와 테스트하는 프로그램 둘 다 아래처럼 설정한다.
프로젝트 속성 > C/C++ > 코드 생성 > 런타임 라이브러리
Debug일 경우, 다중 스레드 디버그 DLL(/MDd)
Release일 경우, 다중 스레드 DLL(/MD)
아래의 참고 링크가 더 정확하지만 간단히 하면,
MT와 MD는 heap 메모리를 같이 쓰냐 DLL 마다 각자 쓰냐의 차이이다.
DLL과 사용하는 프로그램의 런타임 라이브러리 설정이 같도록 맞춰주어야 한다고 한다.
나의 경우는 서로 설정이 맞지 않아서 그랬고, 다중 스레드 (디버그) DLL 로 바꿔주기도 하였다.
참고 링크
http://jglee.egloos.com/1015547
https://diehard98.tistory.com/entry/MSDN-MT-MTd-MD-MDd-C-Runtime-Library-Option
728x90
반응형
'개발' 카테고리의 다른 글
vs code + spring boot + vue.js 설치 가이드(1) (0) | 2020.11.18 |
---|---|
mxnet graphviz view() 오류 (0) | 2020.06.19 |
github blog theme 변경 (0) | 2020.06.06 |
ubuntu file encoding 확인 (1) | 2020.05.15 |
telegrambot 버튼 이어서 진행 (0) | 2020.05.09 |