lovejobs

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
  138 随笔 :: 3 文章 :: 46 评论 :: 28万 阅读

1.静态库使用比较简单,就两步

@1包含静态库头文件#include "文件名"

@2预处理加载静态库 #pragma comment(lib,"库文件名")

2.再看动态库

@1首先得有动态库文件,将动态库文件放在源码目录(不然后面加载得传入文件路径),这是我的动态库源文件内容

复制代码
 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<windows.h>
 4 
 5 //导出函数,加载的使用可以使用
 6 _declspec(dllexport) void popWindow()
 7 {
 8     MessageBoxA(0, "你好,世界", "唐嫣", 1);
 9 }
10 
11 _declspec(dllexport) int add(int a, int b)
12 {
13     return a + b;
14 }
复制代码

 

@2包含windows头文件#include<windows.h>

#include<stdio.h>
#include<stdlib.h>
#include<windows.h>

 

@3声明指向要调用的函数的函数指针

//定义函数指针来调用动态库,typedef简化函数指针类型定义
typedef void(*ppop)();
typedef int(*padd)(int, int);

@4加载动态库

HMODULE mydll = LoadLibraryA("动态库.dll");

@5调用动态库模块函数

ppop pw;//定义弹窗函数指针
pw = (ppop)GetProcAddress(mydll, "popWindow");//获得动态库文件的模块(函数)的入口地址

3.下面是调用动态库文件的全部源码

复制代码
 1 #include<stdio.h>
 2 #include<stdlib.h>
 3 #include<windows.h>
 4 
 5 //定义函数指针来调用动态库,typedef简化函数指针类型定义
 6 typedef void(*ppop)();
 7 typedef int(*padd)(int, int);
 8 
 9 
10 void main()
11 {
12     HMODULE mydll = LoadLibraryA("动态库.dll");
13     if (mydll == NULL)
14     {
15         printf("动态库加载失败");
16     }
17     else
18     {
19         //弹窗函数调用
20         ppop pw;//定义弹窗函数指针
21         pw = (ppop)GetProcAddress(mydll, "popWindow");//获得动态库文件的模块(函数)的入口地址
22         if (pw != NULL)
23         {
24             pw();//调用
25         }
26 
27         //求和函数调用
28         padd pa;
29         pa = (padd)GetProcAddress(mydll, "add");
30         if (pa != NULL)
31         {
32             int m = pa(13, 16);
33             printf("%d\n", m);
34         }
35             
36     }
37 }
复制代码

4.查看运行结果,可见调用成功。

 

posted on   lovejobs  阅读(488)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示