C++ 使用静态链接库和动态链接库

# C++ 使用AdbHelper静态链接库
   ## 必备文件:静态库AdbHelper.h,AdbHelper.lib以及动态库AdbHelper.dll <br />

   ## <font color=#DC143C>&emsp;&emsp;资源文件使用用法:</font>
   1、首先在头文件中添加AdbHelper.h的头文件,头文件中是静态链接库的接口方法说明
   2、其次在资源文件中添加AdbHelper.lib的静态资源文件,头文件中是静态链接库的接口方法说明
   3、在需要使用到地方使用即可正常使用,如下:
      ···
      include包含引用AdbHelper.h文件
      #include "AdbHelper.h"

      使用
      // 点击连接,启动服务
     void CMFCApplication6Dlg::OnBnClickedButton2()
     {
        int res= Start();
       //assert(res == 0);
     }

     ···
   ## <font color=#DC143C>&emsp;&emsp;通用使用用法:</font>
   1、首先在头文件中添加AdbHelper.h的头文件,头文件中是静态链接库的接口方法说明
   2、其次选择项目,右键属性, 配置属性,链接器 输入 附加依赖项,弹窗选择静态链接库lib文件,如下图:
   ![静态链接库使用说明图片](F://Temp//test//MFCApplication6//MFCApplication6//res//静态链接库使用说明.pngG)
(步骤2 也可以使用:#pragma comment(lib,"MyLib.lib"),可以替代手动链接lib文件,显示加载链接库)</br>
3、在需要使用到地方使用即可正常使用,如下: ··· include包含引用AdbHelper.h文件 #include "AdbHelper.h" 使用 // 点击连接,启动服务 void CMFCApplication6Dlg::OnBnClickedButton2() { int res= Start(); //assert(res == 0); } ··· # C++ 使用AdbHelper动态链接库 # <font color=#DC143C>&emsp;&emsp;通用使用用法:</font> 1、在需要使用到地方使用即可正常使用,如下: ··· 代码 #include <iostream> #include "windows.h" /* Windows头文件中包含可以加载DLL的函数。---注意要先声明一下对应的指针函数接口 */ typedef int(*ptrSub)(int, int); HMODULE hMod = LoadLibrary(L"TestDll.dll"); /* 在调用DLL函数之前,要定义函数指针,用来调用函数。可以看出,函数指针的类型与DLL中的要一致。*/ //HMODULE hMod = LoadLibrary(L"AdbHelper.dll"); /* 调用LoadLibrary函数加载DLL文件。加载成功,hMod指针不为空。这里也可以是一个地址加文件名 */ 使用 /// <summary> /// 调用TestDll.dll中的加法函数--sum /// </summary> void CMFCWinformAppTestDlg::OnBnClickedButton11() { if (hMod != NULL) { /* 如果加载成功,则可通过GetProcAddress函数获取DLL中需要调用的函数的地址。 获取成功,sum指针不为空。 */ ptrSub sum = (ptrSub)GetProcAddress(hMod, "sum"); if (sum != NULL) { int a = sum(10, 6); CString temp_value = _T("处理数据:"); //temp_value用来处理float值 temp_value.Format(_T("%d"), a);//固定格式 //AfxMessageBox("10 - 6 =" + temp_value); CString tempvalue = _T("10 - 6 =" + temp_value); MessageBox(tempvalue, _T("标题"), MB_USERICON | MB_OK); //std::cout << "10 + 6 = " << a << std::endl; /*获取地址成功后,通过sum调用函数功能。*/ } //FreeLibrary(hMod); /*在完成调用功能后,不在需要DLL支持,则可以通过FreeLibrary函数释放DLL。*/ } } /// <summary> /// 调用TestDll.dll中的减法法函数--minus /// </summary> void CMFCWinformAppTestDlg::OnBnClickedButton12() { if (hMod != NULL) { /* 如果加载成功,则可通过GetProcAddress函数获取DLL中需要调用的函数的地址。 获取成功,sum指针不为空。 */ ptrSub minus = (ptrSub)GetProcAddress(hMod, "minus"); if (minus != NULL) { int a = minus(10, 6); CString temp_value = _T(""); //temp_value用来处理float值 temp_value.Format(_T("%d"), a);//固定格式 //AfxMessageBox("10 - 6 =" + temp_value); CString tempvalue = _T("10 - 6 =" + temp_value); MessageBox(tempvalue, _T("标题"), MB_USERICON | MB_OK); //int result = MessageBox(TEXT("10 - 6 = a"), TEXT("新建任务"), MB_YESNO); //std::cout << "10 - 6 = " << a << std::endl; /*获取地址成功后,通过sum调用函数功能。*/ } FreeLibrary(hMod); /*在完成调用功能后,不在需要DLL支持,则可以通过FreeLibrary函数释放DLL。*/ } ··· # 测试程序TestDll.dll,源C++项目TestDll,编译生成TestDll.dll,TestDll.lib以及头文件Add.h

 

posted @ 2022-07-14 14:39  龙骑科技  阅读(194)  评论(0编辑  收藏  举报