首先我们得分清楚概念。
dll是动态库,lib是静态库。
制作静态库可以参考这个链接:https://blog.csdn.net/qq_41897973/article/details/105265903?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_title~default-0.no_search_link&spm=1001.2101.3001.4242
而调用静态库的时候,将lib和相应的头文件添加到项目中即可。
动态库:
这个是使用vs2019的动态链接库项目进行生成的库(dll链接库)
https://blog.csdn.net/qq_30139555/article/details/103621955
上面这个链接是建立一个动态库。也会生成lib库,注意这个时候生成的lib库内存大小比dll库小,说明lib只是一个导入库而已,并不是真正的代码库。这个时候想调用这个库,一样把lib、dll、相应的头文件.h都放进新项目中。这样就实现了隐形调用dll库了。
而显性调用dll库,是只有dll文件的时候。清楚库内部的函数定义的情况下,进行操作。
显性操作比较麻烦。
下面这个示例
//需要调用的dll文件名:TextDll.dll //需要调用的函数原型是:void SayHello()
#pragma comment(lib,"TextDll.dll") //vs项目进行链接dll文件
typedef void (*Say)(); //定义一个这样的保存指针
HMODULE hModule = LoadLibrary(L"TextDll.dll");
if (!hModule)
{
cout << "Error!" << endl;
}
Say pg = (Say)GetProcAddress(hModule,"SayHello"); //加载函数
pg(); //执行
FreeLibrary(hModule); //释放加载的内存
浙公网安备 33010602011771号