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 
#include 
#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 
#include 
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<2, 3)<

在字符串前加一个L作用: unicode字符集是两个字节组成的。L告示编译器使用两个字节的 unicode 字符集。

你可能感兴趣的:(沉思厅)