如何设置Visual Studio来调试DLL("无法启动程序错误")

时间:2017-02-10 16:50:17

标签: c++ debugging dll visual-studio-2013 vst

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

更多信息:

我所知道的是,在这个成功运行的项目中,对Visual Studio项目设置进行了一些修改,标记为' pre-build events'并且'构建后事件',所以我想要做的就是以某种方式编辑这些以告诉Visual Studio如下:"嘿,在你尝试运行和调试这个DLL之前,你必须启动另一个程序(我的程序称为Max.exe),然后你必须等到该程序加载DLL。然后你可以调试!不要成为一个愚蠢的计算机,并尝试调试它甚至加载到Max.exe中......"

我不知道的是:一切都好。这就是我所知道的关于我想要做的事情的全部内容,那就是用英语与计算机交谈的多彩尝试。

目前,当我在Visual Studio中构建并运行我的DLL时,出现错误"无法启动程序"。这并不令人惊讶,因为项目对我想用来测试DLL的环境一无所知,但问题是我不知道Visual Studio需要知道什么。我真的不太了解编程,以了解我试图做的事情的含义。是的,我确实提到了那些标记为预构建和后期构建的字段,因为我记得它们很重要,但我不确切地知道在这些字段中写什么或怎么写,我也不知道是否会有在此之前我需要告诉Visual Studio更多的事情。

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

2 个答案:

答案 0 :(得分:1)

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

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

通过此更改,启动调试实际上将启动第三方应用程序并将调试器附加到它。一旦应用程序加载了您的插件,您就可以正常调试它。

答案 1 :(得分:1)

对于Visual Studio,

  1. Solution Explorer中,右键点击项目,然后选择Properties
  2. Properties中,选择Configuration Properties -> Debugging
  3. 对于Command,输入将加载DLL的可执行文件的完整路径。相应地填写Command ArgumentsWorking Directory
  4. 此外,您需要确保可执行文件实际加载了您正在构建的DLL。很多错误是启动他们的可执行文件,并没有意识到可执行文件正在加载他们试图调试的另一个版本的DLL。这可能是由于Windows使用DLL搜索逻辑(exe目录,路径等)搜索它找到的第一个DLL。