DLL 프로젝트에서 string을 사용하는 경우 발생하는 문제에 대한 report.
DLL 프로젝트(이하 A 프로젝트)를 release 모드로 컴파일 한 것을 다른 프로젝트(이하 B 프로젝트)에서 불러들여 사용할 때, B 프로젝트를 debug 모드로 컴파일하면 string 과 관련된 부분의 코드가 정상적으로 작동하지 않는 문제가 발생하는데, ( DLL내의 함수의 매개변수로 string을 사용하는 경우였음.) B 프로젝트를 release 모드로 컴파일 하면 문제가 생기지 않는 것을 발견하였음.
일단 정확한 원인은 파악하기 어려우나 유사한 경험에 대한 stackoverflow의 이야기를 따라보자면, 같은 모드로 컴파일 하면 문제 없다는 결론. 즉, A프로젝트를 debug 모드로 컴파일 한 것을 B프로젝트에서도 debug 모드로 실행하거나, A프로젝트를 relase 모드로 컴파일 한 것을 B 프로젝트에서 로딩할 때 relase 모드로 돌리거나... 하면 문제를 피해갈 수 있다는 것.
그러나, 이는 지나치게 불편함을 초래하므로 결론은
DLL 프로젝트에서 string 대신 const char*를 사용하는 것으로 해결하였음.
끝.