【问题标题】:Visual Studio 2017 dependent .dll not found未找到 Visual Studio 2017 依赖的 .dll
【发布时间】:2017-07-24 15:08:04
【问题描述】:

我正在使用我想在我的项目中使用的外部 API 开发语音识别儿童游戏。所述API有lib文件、dll文件、头文件和cpp文件。到目前为止,我已经成功地将库文件(至少我认为我有)添加到了我的项目目录中,将所有必要的头文件添加到了外部依赖项中,并且我还需要向我的项目中添加两个 .dll 文件。首先,我添加了我的 Audio.dll 文件,它被完美地添加,没有任何问题。其次,我添加了我的 Speech.dll,这就是我的问题出现的地方。我的调试错误列表中没有收到任何错误,但是,我的项目的输出如下所示:

'Project.exe' (Win32): Loaded 'C:\Path\Project.exe'. Symbols loaded.
'Project.exe' (Win32): Loaded 'C:\Windows\System32\ntdll.dll'. Cannot find or open the PDB file.
'Project.exe' (Win32): Loaded 'C:\Windows\System32\mscoree.dll'. Cannot find or open the PDB file.
'Project.exe' (Win32): Loaded 'C:\Windows\System32\kernel32.dll'. Cannot find or open the PDB file.
'Project.exe' (Win32): Loaded 'C:\Windows\System32\KernelBase.dll'. Cannot find or open the PDB file.
'Project.exe' (Win32): Loaded 'C:\Windows\System32\ucrtbased.dll'. Cannot find or open the PDB file.
'Project.exe' (Win32): Loaded 'C:\Windows\System32\vcruntime140d.dll'. Cannot find or open the PDB file.
The thread 0x3274 has exited with code -1073741515 (0xc0000135).
The thread 0x198c has exited with code -1073741515 (0xc0000135).
The program '[17020] Project.exe' has exited with code -1073741515 (0xc0000135) 'A dependent dll was not found'.

在此之后我收到一个弹出系统错误:代码执行无法继续,因为未找到 Speech.dll。重新安装程序可能会解决此问题。

没有提及 Audio.dll,但是没有找到与 Audio.dll 位于同一文件夹中的 Speech.dll。我尝试重新安装.dll,我尝试重新安装Visual Studio 2017,我尝试添加->现有项目->.dll,我尝试将dll添加到.exe所在的项目路径中,我尝试将它添加到每个文件夹/subfolder 都接收与我的输出相同的序列。

我的问题是,如何让我的 Visual Studio 2017 项目识别我的 Speech.dll 文件?

【问题讨论】:

  • 这是使用 3rd 方库时可能发生的最基本的事故。谷歌“visual studio show loader snaps”的点击率。
  • 非常感谢!我知道 C++ 并且并不完全意识到这一点。这帮助我弄清楚了。

标签: windows visual-studio visual-c++ dll visual-studio-2017


【解决方案1】:

请确保speech.dll 与您的project.exe 位于同一文件夹中。

Windows 按以下顺序搜索dlls:

  1. 您的应用程序文件夹
  2. \windows\system32
  3. 等,根据Windows定义的路径

请确保dll 存在于这些文件夹中,否则您将收到dll 缺失的错误。

注意:如果您正在调试,请确保您已将用于调试的工作目录正确设置为指向包含您的project.exedll 的文件夹。

【讨论】:

  • 看来 Path 中的位置实际上不足以让 VS 找到它。
【解决方案2】:

在 Visual Studio 2019 中(我不知道这是否适用于早期版本),您可以复制 DLL 作为构建过程的一部分。基本上,您需要向您的项目添加一个构建后事件。构建后事件会将 DLL 复制到您的构建输出目录。

有关指定构建事件,请参阅:

https://docs.microsoft.com/en-us/cpp/build/specifying-build-events?view=msvc-160

您将用于构建后事件的命令是:

xcopy /y /d "<relative path or absolute path to dll location>/youlib.dll" "$(outdir)"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多