如果我发布使用 IPP 库的 DLL,我是不是也应该发布 IPP DLL?
Posted
技术标签:
【中文标题】如果我发布使用 IPP 库的 DLL,我是不是也应该发布 IPP DLL?【英文标题】:If I ship a DLL that use IPP library, should I also ship IPP DLLs?如果我发布使用 IPP 库的 DLL,我是否也应该发布 IPP DLL? 【发布时间】:2018-11-23 08:26:11 【问题描述】:我正在阅读关于 IPP Dispatcher 的有趣的article。在某些时候它写道:调度是指在运行时检测 CPU 特性然后选择与您的 CPU 对应的英特尔 IPP 优化库集的过程。例如,在 \ia32\ipp 目录中,ippip8.dll 库文件包含英特尔® SSE4.2 处理器的 32 位优化图像处理库; ‘ippi’指图像处理库,‘p8’指32位SSE4.2架构。
这是否意味着如果我使用ipp.h
发布一个DLL,当我向客户发货时,他们也需要IPP
库的DLL 版本?还是它们在最终构建中自动编译并与.lib
s 链接?
我没有在文档上看到 DLL example
。
【问题讨论】:
【参考方案1】:您不必全部发货,系统会在运行时自动分派。如果某个库“缺失”,则运行时将选择较低兼容的运行时(因此您至少应该拥有 SSE2 运行时)。
【讨论】:
呃,整个过程都不清楚。这就是我认为应该理解的:假设我构建了MyPlug.dll
,它使用ippsExp_64f
。当我在不同的机器/cpu 上运行它时,默认情况下ippInit
将自动捕获哪个 CPU 正在运行,并将调度到优化(重载)ippsExp_64f
函数。但是所有这些重载都在程序本身内,否则调度程序会调用 IPP DLL? (所以用户在我的程序旁边也需要它们)?
在图书馆里。
“在图书馆里”是什么意思? .lib 和 .dll 都是库。但是这些将包含在最终(唯一)dll(.lib)中,而其他需要单独发送。
.lib 是 .dll 的定义(如果您要链接 dll)。它们不包含代码。
.lib 不是已经编译好的目标文件的集合吗?以上是关于如果我发布使用 IPP 库的 DLL,我是不是也应该发布 IPP DLL?的主要内容,如果未能解决你的问题,请参考以下文章