C++ windows找不到dll,甚至认为它位于路径中的目录中
我有一个名为funner.cpp的cpp文件,我使用以下命令将其编译成一个dll文件:(使用microsofts CL编译器,顺便说一句) 生成了以下文件:funner.lib、funner.dll 然后,我创建了另一个名为mainer.cpp的cpp文件,该文件调用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时,程序按预期运行,我没有收到任何错误
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\