扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
作者:sundy26 来源:论坛 2007年11月16日
关键字:
为了让DemoTestDLL能够调用TestDLL.dll程序,需要让前者能够"看见" DLL程序。我们将TestDLL.dll文件考到DemoTestDLL的Debug目录下,一个Windows程序定位DLL的次序是:
1、 包含EXE文件的目录。
2、 进程的当前工作目录。
3、 Windows系统目录。
4、 Windows目录。
5、 列在Path环境变量中的一系列目录。
在测试DLL按钮添加下面代码:
void CDemoTestDLLDlg::OnBnClickedButton1() { // TODO: 在此添加控件通知处理程序代码 //声明DLL函数 typedef void (_cdecl *GETHOSTNAME)(LPTSTR strHostName); typedef void (_cdecl *GETSYSTEMTYPE)(char * strSystemType); typedef void (_cdecl *GETIPADDRESSLIST)(char ** lpIPList,DWORD *lpNumber); //声明函数句柄 HMODULE hTestDLL = NULL; GETHOSTNAME GetHostName = NULL; GETSYSTEMTYPE GetSystemType = NULL; GETIPADDRESSLIST GetIpAddressList = NULL; // 加载动态链接库 hTestDLL = LoadLibrary("TestDLL.dll"); if(hTestDLL == NULL)\ { printf("cannot load LCDDLL.dll\n"); exit(0); } /*** 找到每个函数的入口 ****/ //系统名称 GetHostName = (GETHOSTNAME)GetProcAddress(hTestDLL,"GetHostName"); if(GetHostName==NULL) { printf("cannot load process GetHostName\n"); FreeLibrary(hTestDLL); exit(1); } //操作系统类型 GetSystemType = (GETSYSTEMTYPE)GetProcAddress(hTestDLL,"GetSystemType"); if(GetSystemType==NULL) { printf("cannot load process GetSystemType\n"); FreeLibrary(hTestDLL); exit(1); } //IP地址列表 GetIpAddressList = (GETIPADDRESSLIST)GetProcAddress(hTestDLL,"GetIPAddressList"); if(GetSystemType==NULL) { printf("cannot load process GetIpAddressList\n"); FreeLibrary(hTestDLL); exit(1); } /*** 使用LPTSTR和使用char*定义的效果是一样的 ***/ //取机器名称 LPTSTR szHostName = new char[1024]; (*GetHostName)(szHostName); //取操作系统类型 char* szSystemType = new char[1024]; (*GetSystemType)(szSystemType); //IP Address List DWORD ipListNumber = 0; //声明方式一 //LPTSTR* lpAddress = new LPTSTR[256]; //声明方式二 char** lpAddress = new char*[256]; for(int i=0;i<256;i++) { lpAddress[i] = NULL; } (*GetIpAddressList)(lpAddress,&ipListNumber); //显示在界面 m_setHostName.SetWindowText(szHostName); m_setSystemType.SetWindowText(szSystemType); //将IP添加到list 中 for(int i=0;i<ipListNumber;i++) { m_IPList.AddString(lpAddress[i]); } } |
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者