系统DLL如何与不兼容的Visual Studio版本一起使用?

问题描述 投票:1回答:1

Visual Studio 2015和2012具有不兼容的C运行时库。如果我尝试将我构建的2015应用程序与我使用2012构建的链接库链接,那么我将收到链接器错误。

但是,我可以将2015和2012应用程序链接到系统库,例如OpenGL32.dll。他们如何实现这一目标?

这只是静态链接到CRT的问题(例如/ MT而不是/ MD)?当我尝试时,我仍然会收到链接错误。

c++ windows visual-studio
1个回答
1
投票

如果您引用的错误是未定义的引用c ++使用的修饰名称,那么它适用于其他库的原因是它们只导出C接口。即使系统库导出多态对象(例如在COM中),它们也是通过C语言接口实现的。是的,如果那些其他库不抱怨他们自己的未定义引用,那么它们已经静态链接到运行时。

此外,MSVC具有目标文件和链接器扩展,可防止链接依赖于C ++运行时的目标文件与不同版本的库一起使用。即使从源代码构建代码然后链接到新的运行时,代码也可以正常工作。如果从源重建,对象很容易以不兼容的方式进行更改,有时甚至不需要对代码进行任何更改。

© www.soinside.com 2019 - 2024. All rights reserved.