本文是本人看了视频C语言也能干大事第二十一节之后所写的总结,链接点击打开链接
1、静态库: 编译时代码编译进exe中,回事的程序体积变大。
2、动态库: 将代码写在dll中。优点:可以多个程序共享dll中的代码,减小了exe文件的体积,有利于开发人员分工。缺点:dll hell(dll地狱),可能不能同时满足多个程序的需求,不同程序调用的时候可能会出现一些问题,可能dll对一个程序的需求贴切度更好,对另一个程序的贴切度稍微差一点,可能会由于升级导致一些程序不能使用此dll文件了。
(1)静态链接 在开头加上这两句 #pragma comment(lib,"dllTEST.lib") extern "C" _declspec(dllexport) int add(int a,int b); 其余的就是简单的函数调用了。
(2)动态链接 在开头加上这句 typedef int(__cdecl* FunctionAdd)(int,int); 关键代码:
case IDC_OK:
{
TCHAR str[256];
HMODULE hModule;
FunctionAdd add;
hModule = LoadLibrary("dllTEST.dll");//调试时hModule为0x10000000
if(NULL==hModule)
{
MessageBox(hwnd,TEXT("加载dll失败"),TEXT("错误"),MB_OK|MB_ICONERROR);
}
add =(FunctionAdd)GetProcAddress(hModule,"add");
if(NULL==add)
{
//error
}
int r = add(1,1);
wsprintf(str,"1+1=%i",r);
MessageBox(hwnd,TEXT(str),TEXT(""),MB_OK);
FreeLibrary(hModule);
}
break;
3.总结
看完这节,我们应该对动态链接库有了基本的认识,动态链接库是个有用的东西,尤其是在我们开发一些大型的程序的时候,动态链接库的重要性会更加突出,我们要好好了解一下这方面的知识。