VS 2012与VS 2010的互操作性

时间:2014-09-25 22:03:52

标签: c++ windows visual-studio-2010 visual-studio-2012

我用C ++编写的应用程序是使用Visual Studio 2010构建的,它需要链接两个外部动态库。其中一个库是使用VS 2010构建的(此处没有问题),但另一个库是使用VS 2012构建的。这个方案是否有效?这是常见的 - 使用不同的编译器版本构建的链接库到一个本身可能是用不同的编译器构建的应用程序。如果这不起作用或者不鼓励这种做法,我想了解在这种情况下阻止互操作性的原因。

1 个答案:

答案 0 :(得分:3)

如果导出的函数使用'C'接口,并且参数/返回类型是通用的Windows API类型,例如LONGDWORDTSTRBOOL等等或指向这些类型的指针,那么使用用不同版本的Visual Studio创建的DLL应该没有问题。

就个人而言,我已经使用VS 2010构建了DLL,并将其与使用这些指南的VS 6.0构建的应用程序一起使用。

但是,如果DLL的导出函数传递类型(如STL或MFC类型)或FILE等类型,则会出现问题,因为这些类型在编译器版本之间有所不同。您别无选择,只能确保您的应用程序和DLL与VS版本匹配。