如何设置 Visual Studio 来调试 DLL ("Unable to start program error")

How to set up Visual Studio to debug a DLL ("Unable to start program error")

基本上,我有一个构建 DLL(VST 音频插件)的 Visual Studio 项目。在过去为我设置此类项目场景的地方,我将能够构建、运行 和调试插件。 Visual studio 会自动启动我用来托管插件的任何程序。我正试图在我当前的项目中实现相同的效果,但我不知道如何设置它。目前,当我在 Visual Studio 中构建和 运行 我的 DLL 时,我收到错误 "Unable to start program"。 DLL 仍在构建,我仍然可以 运行 它,但我无法从 Visual Studio 调试它,因为我不知道我需要在我的项目设置中做什么才能实现这一点。我该怎么做?

更多信息:

我所知道的是,在成功运行的项目中,对标记为 'pre-build events' 和 'post-build events' 的字段下的 Visual Studio 项目设置进行了一些修改,因此大概我想做的是以某种方式编辑这些以告诉 Visual Studio 以下内容:"Hey, before you try and run and debug this DLL, you have to launch another program (my program is called Max.exe), and then you have to wait until that program loads the DLL. Then you can debug! Don't be a stupid computer and try to debug it before it's even loaded in Max.exe..."

我不知道的是:其他一切。这就是我所知道的关于我正在尝试做的事情的全部内容,因此是用英语与计算机交谈的丰富多彩的尝试。

目前,当我在 Visual Studio 中构建和 运行 我的 DLL 时,出现错误 "Unable to start program"。这并不奇怪,因为项目对我想用来测试 DLL 的环境一无所知,但问题是我不知道 Visual Studio 需要知道什么。我真的不太了解编程,无法理解我正在尝试做的事情的含义。是的,我确实提到了那些标记为 pre-build 和 post-build 的字段,因为我记得它们很重要,但我不知道在这些字段中究竟写什么或如何写,我也不知道是否有在这起作用之前,我需要告诉 Visual Studio 更多的事情。

Q.E.D 我实际上并不确定预构建事件和 post 构建事件是什么,或者它们是如何工作的。我几乎不知道关于自定义 VS 项目设置的第一件事。我只知道如何编写音频处理代码。我觉得需要这个免责声明,因为通常我的问题会遇到愤怒的程序员,他们认为我没有做自己的研究;他们没有意识到我是一名跳过编程 101 的音频工程师。是的,我敢肯定,如何调试 dll 是一个常见问题,但这些问题的答案往往假设我不具备先决条件知识。

您需要在项目的调试属性中编辑命令字段。 Right-click 在解决方案资源管理器中的项目上,然后单击“属性”(通常是最后一项)。打开配置属性下的调试页面。命令字段指示在调试时启动哪个可执行文件。

默认情况下,它包含 $(TargetPath),它指的是您的项目编译的最终二进制文件。这对 DLL 没有用,因为 DLL 不可执行。将此更改为您为其编写插件的任何第三方应用程序的路径。

进行此更改后,通过调试启动将实际启动第三方应用程序并将调试器附加到它。应用程序加载您的插件后,您将能够正常调试它。

对于Visual Studio,

  1. Solution Explorer 中,右键单击项目并 select Properties
  2. Properties中选择Configuration Properties -> Debugging
  3. 对于 Command,输入将加载您的 DLL 的可执行文件的完整路径。相应地填写 Command ArgumentsWorking Directory

此外,您需要确保可执行文件确实加载了您正在构建的 DLL。很多人犯的一个错误是启动他们的可执行文件,而没有意识到可执行文件正在加载他们试图调试的另一个版本的 DLL。这可能是由于 Windows 使用 DLL 搜索逻辑(exe 目录、路径等)搜索它找到的第一个 DLL。