如何用VC调试DLL
发布网友
发布时间:2023-12-08 12:39
我来回答
共2个回答
热心网友
时间:2024-12-12 23:25
分动态调用和静态调用。无论哪种调用,都需要dll的头文件(即函数调用接口说明)。静态调用还需要lib文件。
大致说下动态调用:
HANDLE hMod = LoadLibrary("mydll.dll");
myfun = (myfun)GetProcAdress(hMod,"dll中的函数名");
myfun是你自己定义的函数指针。
静态的:
在需要使用的开头加上
#pragma comment(lib, "XXX.lib")
然后就可以象使用自己的函数一样使用dll中的函数了。
热心网友
时间:2024-12-12 23:26
这要看它导出的标准,给你个简单的例子:
dll导出函数:
//dqc 2009.03.12 打开串口
extern "C"
void __declspec( dllexport ) OpenCommPort()
{
//先保存主程序资源
HINSTANCE hEXE=AfxGetResourceHandle();
//调用你的DLL
HMODULE hDLL=GetMoleHandle("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();//打开串口
}
直接调用就可以
OpenCommPort();