如何指定我希望我的 LIB 链接到的 DLL 文件? - 视觉工作室 2019
Posted
技术标签:
【中文标题】如何指定我希望我的 LIB 链接到的 DLL 文件? - 视觉工作室 2019【英文标题】:How to specify the DLL file that I want my LIB to be linked to? - Visual Studio 2019 【发布时间】:2020-07-11 11:16:53 【问题描述】:我有同一个 DLL 文件的不同版本,我想确保它链接到最新版本。 但在 LIB 文件中,只指定了“FileName.dll”,我猜它已在各个文件夹中检查,直到找到为止。
如何确保它使用我想要的?
问题是我想将 OpenCL 库与 OpenGL 交互一起使用。
但由于 AMD-APP 已从官方网站上删除,我下载了最后一个版本,它可能已经过时了。由于我在clinfo
的设备获得了1.2 的驱动程序版本(我需要>= 2.0)。
所以我为图形安装了 Radeon Software Adrenalin thingy,它给了我一个新版本的 DLL 文件 (amd_opencl32.dll),clinfo
程序返回了 2.0 的驱动程序版本。
旧版AMD-APP的OpenCL.lib链接到一个OpenCL.dll,有什么办法可以链接到新版的吗?我在尝试一些不可能的事情还是非常糟糕的事情?
【问题讨论】:
动态链接的重点在于链接是在运行时建立的。所以我看不出你如何以一种完全通用的方式实现你想要的。听起来你想要静态链接。 我知道,但是,LIB 文件链接到 DLL 文件。我想确保它链接到正确的。 关键是 OpenCL.lib 没有链接到任何特定的 OpenCL.dll。所拥有的只是一个名称,您所能影响的只是在运行时搜索该名称的位置。 【参考方案1】:LIB 仅按名称引用 DLL,而不是按版本、路径或任何其他唯一标识符。
当您的进程启动时,它会通过特定的路径搜索算法解决其对"FileName.dll"
的依赖。几乎总是首先在与 EXE 本身相同的目录中查找 DLL,然后再返回其他目录。您需要知道的一切都记录在这里:
Dynamic-Link Library Search Order
【讨论】:
以上是关于如何指定我希望我的 LIB 链接到的 DLL 文件? - 视觉工作室 2019的主要内容,如果未能解决你的问题,请参考以下文章