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

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

本文关键字:to Unable start error program DLL 何设置 设置 Visual Studio 调试      更新时间:2023-10-16

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

更多信息:

我所知道的是,在成功工作的项目中,在标记为"预生成事件"answers"后生成事件"的字段下,对Visual Studio项目设置进行了一些修改,所以大概我想做的是以某种方式编辑这些,告诉Visual Studio以下内容:"嘿,在你尝试运行和调试这个DLL之前,你必须启动另一个程序(我的程序名为Max.exe),然后你必须等到该程序加载DLL。然后你就可以调试了!不要做一台愚蠢的计算机,甚至在它加载到Max.exe之前就尝试调试它…">

我不知道的是:其他一切。这就是我所知道的关于我正在努力做什么的全部,以及用英语与电脑交谈的丰富多彩的尝试。

目前,当我在Visual Studio中构建和运行DLL时,我会收到错误"无法启动程序"。这并不奇怪,因为该项目对我想用来测试DLL的环境一无所知,但问题是我不知道Visual Studio需要知道什么。我对编程的了解还不够,无法理解我试图做的事情的含义。是的,我确实提到了那些标记为预构建和后构建的字段,因为我记得它们很重要,但我不知道在这些字段中应该写什么或如何写,我也不知道在这之前是否还有更多的事情需要告诉Visual Studio。

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

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

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

有了这个变化,带调试启动实际上会启动第三方应用程序并将调试器附加到它上。一旦应用程序加载了你的插件,你就可以正常调试它了。

对于Visual Studio,

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

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