如何用VC调试DLL

来源:百度知道 编辑:UC知道 时间:2024/06/06 16:59:15
下了一个MapiRule的源代码
但是DLL格式的
不知道用VC怎么调试它

分动态调用和静态调用。无论哪种调用,都需要dll的头文件(即函数调用接口说明)。静态调用还需要lib文件。
大致说下动态调用:
HANDLE hMod = LoadLibrary("mydll.dll");
myfun = (myfun)GetProcAdress(hMod,"dll中的函数名");
myfun是你自己定义的函数指针。
静态的:
在需要使用的开头加上
#pragma comment(lib, "XXX.lib")
然后就可以象使用自己的函数一样使用dll中的函数了。

这要看它导出的标准,给你个简单的例子:
dll导出函数:
//dqc 2009.03.12 打开串口
extern "C"
void __declspec( dllexport ) OpenCommPort()
{
//先保存主程序资源
HINSTANCE hEXE=AfxGetResourceHandle();
//调用你的DLL
HMODULE hDLL=GetModuleHandle("RecCpu.dll"); //dqc 2009.02.26

AfxSetResourceHandle((HINSTANCE)hDLL);
p_dlg = new CCommTongXin();
if(p_dlg)
p_dlg->Create(IDD_COMM_TONGXIN,NULL); //非模态方式创建

p_dlg->OpenCommPort();
//恢复主程序资源
AfxSetResourceHandle(hEXE);
}

其他工程中对该函数的调用:
声明:
extern "C"{
void OpenCommPort();//打开串口