【问题标题】:How to specify the DLL file that I want my LIB to be linked to? - Visual Studio 2019如何指定我希望我的 LIB 链接到的 DLL 文件? - 视觉工作室 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。所拥有的只是一个名称,您所能影响的只是在运行时搜索该名称的位置。

标签: c++ visual-studio dll lib


【解决方案1】:

LIB 仅按名称引用 DLL,而不是按版本、路径或任何其他唯一标识符。

当您的进程启动时,它会通过特定的路径搜索算法解决其对"FileName.dll" 的依赖。几乎总是首先在与 EXE 本身相同的目录中查找 DLL,然后再返回其他目录。您需要知道的一切都记录在这里:

Dynamic-Link Library Search Order

【讨论】:

    猜你喜欢
    • 2020-02-10
    • 1970-01-01
    • 2020-12-12
    • 2011-04-19
    • 1970-01-01
    • 2013-08-27
    • 2014-03-23
    • 2011-10-29
    • 1970-01-01
    相关资源
    最近更新 更多