首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何允许在同一进程中针对不同版本的Visual Studio编译的DLL使用线程构建基块

问如何允许在同一进程中针对不同版本的Visual Studio编译的DLL使用线程构建基块
EN

Stack Overflow用户
提问于 2011-11-11 01:08:52
回答 1查看 848关注 0票数 1

在我的DirectShow应用程序中,我有一个第三方动态链接库(一个32位的DirectShow过滤器),我没有针对32位Windows版的Intel线程构建块(tbb.dll)的链接的源代码。

如果我想在同一进程中使用我自己的动态链接库中的线程构建块(例如,另一个32位DirectShow过滤器),这是否会强制我使用与此第三方动态链接库的作者相同的Visual Studio版本?

编辑-我已经意识到版本独立的_mt库可能是在这个场景中使用的最好的库。如果第三方供应商还没有为这个_mt动态链接库构建,会发生什么?

在我自己的线程构建块安装中,我注意到不同版本的Visual Studio有不同的tbb.dll版本- 2005、2008、2010和'MT‘(还不确定是什么)。一个明显的原因是,不同版本的tbb.dll链接到不同版本的Visual Studio运行时库DLL。是否可以通过检查来判断需要哪个版本的tbb.dll,或者我是否必须在指示所用编译器版本的二进制文件中到处寻找字符串(第三方DLL似乎静态地链接了visual studio运行时)?

据我所知,tbb.dll不使用清单和并行版本控制,并且在不同的编译器版本中使用相同的名称。最后一种办法是重命名不同的tbb.dlls,并修改导入库或导入以引用重命名的dll,但我真的不想这样做。有没有一种干净的方法来重定向带有链接器选项的导入?

由于这些DLL是行为良好的DirectShow过滤器,它们不会在它们之间传递Visual Studio运行时或TBB对象,这显然是危险的。它们的交互将仅限于通过标准COM DirectShow调用相互调用。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-11 05:58:06

如果你没有使用TBB,那么问题只是关于Visual Studio的版本,那么你不必担心: Visual C++运行时动态链接库在不同的版本中有不同的名称,例如MSVCR70.DLL,MSVCR90.DLL等等。正如你已经发现的,/MT switch将编译/链接一个静态版本的运行时,并将这些东西嵌入到你的动态链接库中,而不必担心与对等动态链接库共享正确的动态链接库。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8083472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档