Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ windows找不到dll,甚至认为它位于路径中的目录中_C++_Windows_Cl - Fatal编程技术网

C++ windows找不到dll,甚至认为它位于路径中的目录中

C++ windows找不到dll,甚至认为它位于路径中的目录中,c++,windows,cl,C++,Windows,Cl,我有一个名为funner.cpp的cpp文件,我使用以下命令将其编译成一个dll文件:(使用microsofts CL编译器,顺便说一句) 生成了以下文件:funner.lib、funner.dll 然后,我创建了另一个名为mainer.cpp的cpp文件,该文件调用dll中的函数 我使用以下命令编译了该文件: cl mainer.cpp /link funner.lib 然后生成一个名为mainer.exe的可执行文件 当我运行mainer.exe时,程序按预期运行,我没有收到任何错误

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

生成了以下文件: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\
我这样做了,然后将文件夹添加到我的系统路径变量中

然后我尝试运行可执行文件,但它给我一个错误,说dll丢失了

但是windows不是在PATH变量中的所有目录中搜索DLL吗


为什么它找不到我的dll?

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


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

我只是从命令行运行它:\openanewcommandline。在您打开新的路径之前,命令行不会更新其路径。不管怎样,这确实有效。谢谢请随意回答:)当您使用控制面板环境变量编辑器时,它会向顶级窗口广播
WM_SETTTINGCHANGE
消息,通知它们永久注册表值已被修改。程序可以通过重新加载其环境来响应此消息,但通常只有资源管理器才能响应。随后,从Explorer启动的任何程序都将继承更新的环境。CMD本身从未看到
WM_SETTINGCHANGE
消息,因为它不承载任何窗口,因此必须从资源管理器重新启动。第一条注释可能应该添加到答案中。
   c:\my_dlls\