模块化编程之动态链接库:显式链接

本文介绍了一个关于动态库显式链接的示例,包括声明文件、定义文件及使用文件的内容。通过加载动态链接库并调用其中的加法和减法函数,展示了动态链接的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

= = 依然是demo

声明文件:

Code:
  1. //////////////////////////////////////////////////////////////////////////   
  2. //      CopyRight(c) 2009, YOYO, All Rights Reserved.   
  3. //      Author: LIN YiQian   
  4. //      Created: 2009/09/15   
  5. //      Describe: 动态库显式链接 声明   
  6. //////////////////////////////////////////////////////////////////////////   
  7. #ifndef _DLL_SHOW_CALCULATE_H_   
  8. #define _DLL_SHOW_CALCULATE_H_   
  9.     
  10. #ifdef CALCULATE_EXPORTS   
  11. #define CALCULATE_API __declspec(dllexport)   
  12. #else   
  13. #define CALCULATE_API __declspec(dllimport)   
  14. #endif   
  15.     
  16. extern "C" CALCULATE_API int Add(int nNum1, int nNum2);   
  17.     
  18. extern "C" CALCULATE_API int Minus(int nNum1, int nNum2);   
  19.     
  20. #endif  //        end of define _DLL_SHOW_CALCULATE_H_  

定义文件:

Code:
  1. //////////////////////////////////////////////////////////////////////////   
  2. //      CopyRight(c) 2009, YOYO, All Rights Reserved.   
  3. //      Author: LIN YiQian   
  4. //      Created: 2009/09/15   
  5. //      Describe: 动态库显式链接 定义   
  6. //////////////////////////////////////////////////////////////////////////   
  7. #include "Calculate.h"   
  8.     
  9. int Add(int nNum1, int nNum2)   
  10. {   
  11.         return nNum1 + nNum2;   
  12. }   
  13.     
  14. int Minus(int nNum1, int nNum2)   
  15. {   
  16.         return nNum1 - nNum2;   
  17. }  

使用文件:

Code:
  1. //////////////////////////////////////////////////////////////////////////   
  2. //      CopyRight(c) 2009, YOYO, All Rights Reserved.   
  3. //      Author: LIN YiQian   
  4. //      Created: 2009/09/15   
  5. //      Describe: 动态库显式链接 使用   
  6. //////////////////////////////////////////////////////////////////////////   
  7. #include <Windows.h>   
  8. #include <iostream>   
  9.     
  10. int main(void)   
  11. {   
  12.         HMODULE hModule = LoadLibrary("动态库显式链接.dll");   
  13.         if (NULL != hModule)   
  14.         {   
  15.                 int (*pFun)(intint) = (int (*)(intint)) (GetProcAddress(hModule, "Add"));   
  16.                 std::cout << pFun(1, 2) << std::endl;   
  17.     
  18.                 pFun = (int (*)(intint)) (GetProcAddress(hModule, "Minus"));   
  19.                 std::cout << pFun(1, 2) << std::endl;   
  20.         }   
  21.         FreeLibrary(hModule);   
  22.     
  23.         system("pause");   
  24.         return 0;   
  25. }  

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值