본문 바로가기

Programming

DLL 에서 string의 debug & release 문제....

 

 

DLL 프로젝트에서 string을 사용하는 경우 발생하는 문제에 대한 report. 

 

 

 

 

DLL 프로젝트(이하 A 프로젝트)를 release 모드로 컴파일 한 것을 다른 프로젝트(이하 B 프로젝트)에서 불러들여 사용할 때, B 프로젝트를 debug 모드로 컴파일하면 string 과 관련된 부분의 코드가 정상적으로 작동하지 않는 문제가 발생하는데,  ( DLL내의 함수의 매개변수로 string을 사용하는 경우였음.)  B 프로젝트를 release 모드로 컴파일 하면 문제가 생기지 않는 것을 발견하였음. 

 

 

https://stackoverflow.com/questions/62792200/c-std-string-different-between-debug-and-release-dynamic-library

 

 

일단 정확한 원인은 파악하기 어려우나 유사한 경험에 대한 stackoverflow의 이야기를 따라보자면, 같은 모드로 컴파일 하면 문제 없다는 결론. 즉, A프로젝트를 debug 모드로 컴파일 한 것을 B프로젝트에서도 debug 모드로 실행하거나, A프로젝트를 relase 모드로 컴파일 한 것을 B 프로젝트에서 로딩할 때 relase 모드로 돌리거나... 하면 문제를 피해갈 수 있다는 것.

 

그러나, 이는 지나치게 불편함을 초래하므로 결론은 

 

DLL 프로젝트에서 string 대신 const char*를 사용하는 것으로 해결하였음. 

 

 

 

끝.