Visual Studio 2015 및 2012에는 호환되지 않는 C 런타임 라이브러리가 있습니다. 2012를 사용하여 구축 한 링크 라이브러리에 2015 빌드 응용 프로그램을 연결하려고하면 링커 오류가 발생합니다.호환되지 않는 버전의 Visual Studio에서 시스템 DLL이 어떻게 작동합니까?
그러나 OpenGL32.dll과 같은 시스템 라이브러리에 2015 년과 2012 년 앱을 모두 연결할 수 있습니다. 그들은 어떻게 그것을 성취합니까?
CRT (예 :/MD 대신/CRT)에 정적으로 연결하기 만하면됩니까? 그것을 시도 할 때 나는 여전히 링크 오류가 발생합니다.
스레딩 모델보다 걱정할 사항이 있습니다. 예를 들어'std :: string &'이 라이브러리 함수의 매개 변수로 사용된다고 가정하십시오. 또한'std :: string'의 구현이 2012 년과 2015 년 사이에 바뀌었을 가능성이 매우 높습니다.이 다른 문자열로 라이브러리 함수를 호출하는 것이 모험이 될 수 있습니다. 그러나 dll 인터페이스가 Plain Old Data (POD) 데이터 유형을 사용하는 C 스타일의 함수 일 뿐이라면 다른 언어를 포함하여 거의 모든 것으로 호출 할 수 있습니다. – user4581301
기본적으로 다른 라이브러리는 원본 및 바이너리 수준 모두에서 인터페이스를 유지 관리합니다. 또한 Windows에서 동시에로드되는 프로세스에서 여러 개의 C 런타임을 가질 수 있으므로 모든 사람이 원하는 것을 얻을 수 있습니다. 물론 이러한 런타임은 상호 운용 할 수 없습니다. – Ivan
Windows 시스템 DLL은 Visual Studio에 연결되어 있지 않습니다. 어셈블리에서조차도 사용할 수 있습니다. 심지어 더 강해서, DLL이 작성되었을 때조차도 존재하지 않는 언어로 사용될 수 있습니다. 논리적입니다. 애플리케이션은 OS에 적응해야합니다. – MSalters