0

我正在尝试从 Visual Studio 2010 调试 C/C++ 本机 DLL 项目。我正在尝试遵循以下说明:http: //msdn.microsoft.com/en-us/library/c91k1xcf (v=VS.100 ).aspx

我想使用内置调试器并能够像处理常规 .exe 项目一样执行代码、检查结构等。上面页面上的说明描述了我看不到的配置属性下的调试类别。

http://img707.imageshack.us/img707/4402/lalasz.png

只需按 F5 进行调试会导致以下错误:

无法启动程序“C:\Users.......Test.dll”

我已经多次将调试器用于常规 .exe 项目,并且在这台计算机上运行良好。我不确定我现在是否只是遗漏了一些非常明显的东西。

编辑:由于我从一开始就没有说清楚,我希望 Visual Studio 将我的 DLL 加载到存根进程中,并让我从那里在源代码级别进行调试,就像 OllyDbg 的做法一样。

我的 DLL 不是包含一堆要导出和调用的函数的类型。相反,它在 DllMain 和 DLL_PROCESS_ATTACH 上执行开关/案例将产生一个新线程。因此,我需要 Visual Studio 做的就是将我的 DLL 加载到存根可执行文件中,并允许我设置断点等。

4

4 回答 4

3

您可能将生成 dll 的项目作为启动项目。

您有两个选择:将启动项目更改为另一个生成使用该 DLL 的可执行文件的项目,或者从项目属性配置 dll 项目的调试设置以启动使用该 dll 的外部应用程序(项目属性/调试/命令)。

于 2010-09-07T19:38:40.923 回答
3

本机 DLL 不能独立运行 - 它们必须在某些程序的上下文中运行。请参阅您引用的说明页面的这一部分。

“如果从创建 DLL 的项目开始调试,则必须指定要用于调试 DLL 的可执行文件。”

于 2010-09-07T19:38:52.920 回答
1

您在解决方案资源管理器窗口中右键单击解决方案名称并获得解决方案属性。请注意,窗口显示“解决方案测试属性页”。

右键单击项目名称(粗体测试)来设置项目选项。

于 2010-09-07T19:38:55.090 回答
0

You would run into this problem from a Managed project also. What Visual Studio is telling you is that it cannot run the DLL, just the same as you cannot double-click a DLL from Explorer, and have a program run.

In order to debug the DLL, write a small console application which calls functions from your DLL and exercises your code. If your DLL has a function foo(), call foo() from main in your console application. Set the console application as the "Startup" project, by right clicking the project name in the Solution Explorer and selecting its option.

Then, when you press F5, you will run the console application, which will call the DLL.

于 2010-09-07T19:40:42.087 回答