DLL显式链接和隐式链接

隐式链接

使用时

-头文件

#include "..\DLLTest\MyDll.h"//dll头文件所在路径
#pragma comment(lib,"..\\debug\\DLLTest.lib")//lib所在路径
        //第1种.用这句代码,让编译器查看已获得的lib文件,同时让它顺便查看该目录的DLL头文件。
        //第2种.把自己写的DLL放到新项目相同的路径中。一般选择第一种

-调用语句

//直接调用DLL中定义的函数。比如我定义的 void TestDll(int);
TestDll(1);

显式链接

使用时

-头文件

#include 

-调用语句

    //在头文件后main函数前定义:
    typedef void (*Test)(int);    //一定是在DLL中定义的相同格式
    //在main函数中
    Test _Test;
    HINSTANCE hInstLib = LoadLibrary(_T("..\\debug\\DLLTest.dll"));  //加载dll
    //或者用LoadLibraryEx
    if (hInstLib == NULL)
    {
        FreeLibrary(hInstLib);  //释放动态链接库
    }
    _Test = (Test)GetProcAddress(hInstLib,"TestDll");//获取动态链接库中的函数地址
    if (_Test==NULL)
    {
        FreeLibrary(hInstLib);
    }
    _Test(1); //调用
图片发自App

-LoadLibrary(PCTSTR pszDLLPathName);
-LoadLibraryEx(PCTSTR pszDLLPathName,
HANDLE hFile,
DWORD dwFlag);

你可能感兴趣的:(DLL显式链接和隐式链接)