c++ - VS 2012 与 VS 2010 的互操作性

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

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

最佳答案

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

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

但是,如果您的 DLL 的导出函数传递诸如 STL 或 MFC 类型或诸如 FILE 之类的类型,那么您就会遇到问题,因为这些类型因编译器版本而异。您别无选择,只能确保您的应用程序和 DLL 的匹配 VS 版本。

关于c++ - VS 2012 与 VS 2010 的互操作性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26048889/

相关文章:

c++ - OpenGL 游戏的主菜单

c++ - std::ofstream 变量定义问题

c++ - 为 const 输入参数传递非常量对象?

c++ - include <name.h> 和 libname.o 处的库名称之间的链接

windows - Visual Studio 在 Windows 7 上将 WINVER/_WIN32_WINNT 设置为 Windows 8?

.net - 在一个安装程序 exe 中一起安装 .NET Framework 和 VB.NET Apps

c# - 线程是一个windows概念吗?

java - 如何获取仅一张图像的缩略图并将其放入 ImageView 中?

asp.net - ASP :HyperLink is not rendered on browser

visual-studio-2010 - 无法在 Visual Studio 2012 中启动 Concurrency Visualizer。出现错误 "Unable to start the ETW collection"