我用C++编写的应用程序是使用Visual Studio 2010构建的,它需要链接两个外部动态库。其中一个图书馆是用VS 2010构建的(这里没有问题),而另一个图书馆是用VS 2012构建的。该计划是否可行?这是否是常见的 - 将使用不同编译器版本构建的链接库导入到本身可能使用不同编译器构建的应用程序中。如果这样做不起作用,或者如果这种做法不受欢迎,我想了解在这种情况下防止互操作性的原因。VS 2012与VS 2010的互操作性
0
A
回答
3
如果导出的函数使用一个“C”接口,所述参数/返回类型是一般的Windows API类型如LONG
,DWORD
,TSTR
,BOOL
等或指针于这些类型的,那么不应该有使用由不同版本的Visual Studio创建的DLL的问题。
就我个人而言,我已经使用VS 2010构建了DLL,并将它与使用VS 6.0构建的应用程序一起使用。
但是,如果您的DLL的导出函数传递类型,如STL或MFC类型,或者诸如FILE
之类的东西,那么您遇到了问题,因为这些类型在编译器版本中不同。你别无选择,只能确保你的应用程序和DLL的匹配VS版本。
+0
至少有一个附加要求:内存必须使用分配它的相同运行时释放。例如,如果您在VS2012库中调用malloc(),则不能从VS2010库的该内存块中调用free()。 (无论如何,这是最佳实践,但在这种情况下是一个常见问题。) – 2014-09-25 22:57:07
相关问题
- 1. 与VS 2010和VS 2012一起工作
- 2. TFS 2012和VS 2010
- 3. CorFlags版本VS 2008,VS 2010,VS 2012,VS 2013
- 4. SQL Server 2012与VS 2010兼容吗?
- 5. vs 2010安装vs vs 2012之后,无法看到vs 2010运行选项
- 6. VS 2012解决方案和项目 - 与VS 2010不兼容?
- 7. 与VS 2010 SQLite
- 8. 为什么办公室互操作参考示VS示数2010
- 9. VS 2012和VS 2012 RC
- 10. mvc 3 System.AccessViolationException与vs 2012
- 11. vs vs 2008 vs vs 2010
- 12. EnvDTE VS 2012 ProjectItems.AddFolder
- 13. MVC 1.0与VS 2010的兼容性
- 14. 性能 - FunctionCall vs事件vs操作vs委托
- 15. VS 2010和VS 2012中不同的LINQ答案
- 16. 将现有的VS 2010 web项目迁移到VS 2012
- 17. VS 2010和VS 2012中的Visual Studio快捷方式
- 18. ni 2012测量工作室2012 VS 2012
- 19. GAE vs AWS 2012
- 20. VS 2010无法看到SQL Server 2012 Express
- 21. TFS 2012编译VS 2010解决方案
- 22. TFS 2010 vs TFS 2012事件处理
- 23. 鼹鼠2010支持VS 2012吗?
- 24. VS 2010或VS 2012可以使用Windows Phone 6 SDK吗?
- 25. 的Visual Studio 2010 VS 2012编译时间性能和C++用户
- 26. LLVM 3.4与VS 2012集成
- 27. 在VS 2012
- 28. VS 2012中的SQLAPI ++
- 29. 链接器错误(VS 2005 VS VS 2012)
- 30. C#-Excel互操作性
可能是一个非常非常糟糕的主意。最糟糕的情况是它似乎正常工作。 – 2014-09-25 22:10:25
C++ 11使得这个非常危险,比以前更多。所有标准C++库类的对象布局都已更改。在C++中没有互操作性,唯一可行的是具有完全相同编译选项的完全相同的编译器版本。 – 2014-09-25 22:22:08