【问题标题】:windows cant find dll even thought its in a directory in the PATHWindows 找不到 dll,即使它位于 PATH 中的目录中
【发布时间】:2017-09-01 18:25:27
【问题描述】:

我有一个名为 funner.cpp 的 cpp 文件,我使用以下命令将其编译为 dll 文件:(使用 microsofts CL 编译器,顺便说一句)

   cl /LD funner.cpp

生成以下文件:funner.lib、funner.dll。

然后我创建了另一个名为 mainer.cpp 的 cpp 文件,它调用了 dll 中的一个函数。

我使用这个命令编译了那个文件:

   cl mainer.cpp /link funner.lib

然后,生成一个名为 mainer.exe 的可执行文件。

当我运行 mainer.exe 时,程序按预期运行,并且我没有收到任何错误。 (只要 funner.dll 文件在同一目录下)

但是我想将 funner.dll 移动到其他地方的另一个目录,比如:

   c:\my_dlls\

所以我这样做了,然后我将文件夹添加到我的系统 PATH 变量中。

然后我尝试运行可执行文件,但它给我一个错误,说缺少 dll?

但是 Windows 不会在 PATH 变量中的所有目录中搜索 dll 吗?

为什么找不到我的dll?

【问题讨论】:

  • 我只是从命令行运行它:\
  • 打开一个新的命令行。在您打开一个新路径之前,命令行不会更新其路径。
  • 没关系,这确实有效。谢谢。随意将其作为答案:)

标签: c++ windows cl


【解决方案1】:

在您关闭并重新打开命令行之前,命令行不会收到更新的PATH

打开一个新的命令行并从那里调用可执行文件。

【讨论】:

  • 当您使用控制面板环境变量编辑器时,它会向顶级窗口广播WM_SETTTINGCHANGE 消息,通知它们持久性注册表值已被修改。程序可以通过重新加载其环境来响应此消息,但通常只有 Explorer 可以。随后,从 Explorer 启动的任何程序都将继承更新后的环境。 CMD 本身永远不会看到WM_SETTINGCHANGE 消息,因为它没有托管任何窗口,因此必须从资源管理器重新启动。
  • 第一条评论可能应该添加到答案中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-16
  • 1970-01-01
  • 2018-12-21
  • 2015-06-08
  • 1970-01-01
相关资源
最近更新 更多