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
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值