C++ 系统错误-“;代码无法继续,因为找不到.dll。”;

C++ 系统错误-“;代码无法继续,因为找不到.dll。”;,c++,visual-studio,dll,C++,Visual Studio,Dll,当我尝试运行我的应用程序时,出现以下错误: 我检查了,没有理由认为它无法找到libnlopt-0.dll。这是(注意GlassModelCalculator是使用libnlopt-0.DLL的DLL),位于GlassModelCalculatorDell文件夹中: 在GlassModelCalculatualTorll的调试文件夹中: 我有一个不同的程序,它有一个控制台,使用glassmodelcalculator.dll,这也有这个问题。为了解决这个问题,我必须将libnlopt-0.d

当我尝试运行我的应用程序时,出现以下错误:

我检查了,没有理由认为它无法找到
libnlopt-0.dll
。这是(注意
GlassModelCalculator
是使用
libnlopt-0.DLL
的DLL),位于
GlassModelCalculatorDell
文件夹中:

在GlassModelCalculatualTorll的调试文件夹中:

我有一个不同的程序,它有一个控制台,使用
glassmodelcalculator.dll
,这也有这个问题。为了解决这个问题,我必须将
libnlopt-0.dll
放在
glassmodelcalculator
的调试文件夹中

我假设这与这里的问题不同,因为您可以清楚地看到
libnlopt-0.dll
位于
GlassModelCalculator
的调试文件夹中


有什么想法吗

Windows在搜索dll时将遵循分层顺序

您可以将dll放在与exe相同的目录中,甚至放在Windows系统文件夹中(只有在您绝对确定要永久保留此dll时,才可以,因为没有清理)


您显然是静态链接到DLL,因此它们需要位于与EXE文件相对的文件夹中,而不是与源代码相对的文件夹中。请参阅。您可以使用sysinternal procmon来查看windows试图加载dll@RemyLebeau没有exe文件,因为我只是在处理dll'sdll不能自己运行,它们需要加载到通过运行exe创建的进程中(错误信息显示
Gsi.exe
,我也看到了
GmcConsole
)@ConnorMote没有exe文件——我清楚地看到
Gsi.exe
正在运行。“甚至在Windows系统文件夹中”——这从来都不是一个好主意。我同意这是一个坏主意,但在某些情况下可以做到(在极少数情况下可能有用)。将非系统文件放在系统文件夹中从来都不是一个好主意。请将DLL放在您自己的文件夹中。如果您有多个应用程序共享同一DLL,则可以将它们放在共享文件夹中,并向操作系统注册,以便它知道在何处可以找到它们。我在一些应用程序的系统文件夹中看到过它的使用(我们也这样做了)用于特殊用途的专用独立机器。