### 如何调试 DLL 文件

答案：

DLL 文件是一种特殊的可执行文件，该文件的运行不会创建独立的进程空间，而是依附于运行此动态库的应用程序的进程中运行。所以动态库的调试和应用程序的调试也是不一样的。DLL 文件的调试步骤如下：

（1）创建一个基于 MFC 的动态连接库程序，设置工程名称为 TextDll。如图 1 所示。

图 1 创建动态库

（2）在动态库中添加求两数之和的程序，代码如下：

extern "C" __declspec(dllexport) int AddInt(int var1,int var2)

{

return var1 + var2;

}

（3）新建一个基于对话框的工程，设置工程名称为 textDemo。如图 2 所示。

图 2 创建基于对话框的工程

（4）在对话框按钮的单击事件中添加如下代码：

void CTextDemoDlg::OnOK()

{

typedef int (*AddInt)(int var1,int var2); //定义函数指针

AddInt _AddInt; //定义指针类型变量

HINSTANCE hInstLibrary = LoadLibrary("TextDll.dll"); //载入 DLL

_AddInt = (AddInt)GetProcAddress(hInstLibrary, "AddInt"); //获取函数指针

UpdateData(); //更新数据到变量

int sum = _AddInt(atoi(m_one),atoi(m_two)); //执行函数计算两数之和

m_value.Format("%d",sum); //将整型转成字符串

UpdateData(false);

FreeLibrary(hInstLibrary); //卸载 DLL

}

（5）调试 DLL 工程时在代码中设置断点，然后进入调试状态，这时会弹出一个 Executable For Debug Session 对话框，在 Executable file name 文本框图中输入调用 DLL 的可执行文件的路径。这样就可以像调试应用程序一样调试 DLL 工程了。如图 3 所示。

图 3 调试 DLL