C++;将dll文件从根目录移动到子文件夹 我正在用VisualC++编写程序。这个程序依赖于一些dll文件,我不想把它们放在system32中。现在dll文件与my.exe位于同一文件夹中,但我想将它们移动到子文件夹中。问题是,如果我移动文件,我的应用程序将无法启动,并出现以下错误消息:

C++;将dll文件从根目录移动到子文件夹 我正在用VisualC++编写程序。这个程序依赖于一些dll文件,我不想把它们放在system32中。现在dll文件与my.exe位于同一文件夹中,但我想将它们移动到子文件夹中。问题是,如果我移动文件,我的应用程序将无法启动,并出现以下错误消息:,c++,visual-c++,dll,components,C++,Visual C++,Dll,Components,MyProgram.exe-找不到组件 由于找不到myDll.dll,此应用程序无法启动。重新安装应用程序可能会解决此问题 我以前也遇到过同样的问题,if在哪里找到了解决方案,包括向注册表添加一些内容,但我忘记了它是如何工作的,现在我再也找不到指南了 有人能帮我吗?听起来你在找HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Path键。有关完整信息,请参阅。简而言之,名为Path的字符串指向DLL搜索路径

MyProgram.exe-找不到组件

由于找不到myDll.dll,此应用程序无法启动。重新安装应用程序可能会解决此问题


我以前也遇到过同样的问题,if在哪里找到了解决方案,包括向注册表添加一些内容,但我忘记了它是如何工作的,现在我再也找不到指南了


有人能帮我吗?

听起来你在找HKEY\U LOCAL\U MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Path键。有关完整信息,请参阅。简而言之,名为Path的字符串指向DLL搜索路径。例如,如果您的应用程序被称为“MyApp”,则这样的.reg文件可以实现以下目的:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppPaths\MyApp.exe]
@="C:\\Program Files\\MyCompany\\MyApp\\MyApp.exe"
"Path"="C:\\Program Files\\MyCompany\\MyApp\\DLLs"

我相信这就是你要找的文章:

现在,每个应用程序都可以将自己的路径存储到注册表的以下项下:

HKEY\ U本地\计算机\软件\ Microsoft\Windows\CurrentVersion\App路径

使用应用程序路径,使用上面示例中的一个.EXE为应用程序设置密钥:

HKEY\U本地\U计算机…\CurrentVersion\App Path\ONE.exe

将(默认)值设置为可执行文件的完整路径,例如:

C:\ProgramFiles\ONE\ONE.exe

添加名为Path的子键


解决这个问题的方法不止一种。正如前面提到的,您可以在注册表中修改应用程序的搜索路径。有时,您没有写入注册表的权限,或者由于其他原因无法写入,那么您可以显式设置dll路径,其WinAPI函数为
SetDllDirectory
,请参见。

将dll放在子目录中听起来很可疑。介意给出原因吗?我不需要将dll文件放在子文件夹中,我只是不希望它们与我的程序放在同一个文件夹中,因为在我看来,程序文件夹中有大约15-20个dll文件看起来很混乱。调用SetDllDirectory显然需要运行进程。这意味着隐式链接的dll不能使用此方法位于wierd路径中。我一直在研究此函数,但如果我理解正确,此函数仅适用于延迟加载的dll文件,而我的则不正确,这就是本文。谢谢,我已经用了半天的时间找不到了!