C語言生成調用DLL

一、生成DLL文件
生成DLL文件需要用到兩個文件,一個頭文件,dll.h,和一個源文件,dll.c

頭文件dll.h內容:  

    #ifndef _DLL_DEMO_H_
    #define _DLL_DEMO_H_
    #ifdef DLLDEMO_EXPORTS
    #define DLL_DEMO _declspec( dllexport )
    #else
    #define DLL_DEMO _declspec(dllimport)
    #endif
    extern "C" DLL_DEMO int Add(int a, int b);
    #endif

dll.c內容

  #include "dll_demo.h"
   int Add(int a, int b)
   {
       return (a + b);
   }

二、調用DLL文件
調用DLL有兩種方式。
(一)靜態調用:使用.h+.lib+.dll

#include <windows.h>
#include <iostream>
#include "DLL.h"
#using namespace std;
#pragma comment(lib, "DLL.lib")

extern "C" _declspec(dllimport) int Add(int a, int b);
int main(int argc, char *argv[])
{
    cout << Add(2, 3) << endl;
    system("pause");
    return 0;
}

把頭文件和lib文件、dll文件都放到跟源文件同一目錄下即可使用。當然,路徑可以重新設置。

(二)動態調用:僅使用dll文件

#include <windows.h>
#include <iostream>
using namespace std;
typedef int (*AddFunc)(int a, int b);
int main(int argc, char *argv[])
{
      HMODULE hDll = LoadLibrary(L"DLL.dll");
      if (hDll != NULL)
      {
            AddFunc add = (AddFunc)GetProcAddress(hDll, "Add");
            if (add != NULL)
            {
                  cout<<add(2, 3)<<endl;
            }
            FreeLibrary(hDll);
      }
}

在字符串前加一個L作用: unicode字符集是兩個字節組成的。L告示編譯器使用兩個字節的 unicode 字符集。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章