C++ 使用静态链接库和动态链接库
# C++ 使用AdbHelper静态链接库 ## 必备文件:静态库AdbHelper.h,AdbHelper.lib以及动态库AdbHelper.dll <br /> ## <font color=#DC143C>  资源文件使用用法:</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>  通用使用用法:</font> 1、首先在头文件中添加AdbHelper.h的头文件,头文件中是静态链接库的接口方法说明 2、其次选择项目,右键属性, 配置属性,链接器 输入 附加依赖项,弹窗选择静态链接库lib文件,如下图: 
(步骤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>  通用使用用法:</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
龙腾一族至尊龙骑
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义