21xrx.com
2024-12-23 00:42:13 Monday
登录
文章检索 我的文章 写文章
如何在C++中导入DLL文件
2023-07-05 03:25:11 深夜i     --     --
C++ DLL 导入 文件 操作

在C++编程中,经常需要调用外部的动态链接库(DLL)文件来扩展程序功能。但是,对于初学者来说,在C++中导入DLL文件可能会比较困难。本文将介绍如何在C++中导入DLL文件。

步骤一:创建DLL文件

首先,在 Visual C++ 中创建一个 DLL 项目,代码里面只需要写一个函数即可,如下所示:


#include "pch.h"

#include <iostream>

using namespace std;

extern "C" __declspec(dllexport) int add(int a, int b)

{

  return a + b;

}

然后编译该项目生成 DLL 文件。

步骤二:导入 DLL 文件

在 C++ 代码中导入 DLL 文件需要用到 Windows API 中的 LoadLibrary 函数和 GetProcAddress 函数。


#include <iostream>

#include <windows.h>

using namespace std;

typedef int(*pFunc)(int, int);

int main()

{

  HINSTANCE hDll = LoadLibrary(TEXT("test.dll")); // 用 LoadLibrary 载入DLL文件

  if (hDll != NULL)

  {

    pFunc AddFunc = (pFunc)GetProcAddress(hDll, "add"); // 用 GetProcAddress 获得函数地址

    if (AddFunc != NULL)

    {

      int a = 10, b = 20;

      int c = AddFunc(a, b); // 调用 DLL 文件中的 add 函数

      cout << "The result is " << c << endl;

    }

    else

    

      cout << "GetProcAddress failed" << endl;

    

    FreeLibrary(hDll); // 释放 DLL 文件

  }

  else

  

    cout << "LoadLibrary failed" << endl;

  

  return 0;

}

在上面的代码中,LoadLibrary 函数的参数是 DLL 文件的路径。如果 LoadLibrary 函数返回一个非空指针,就表示 DLL 文件加载成功,此时可以使用 GetProcAddress 函数获取 DLL 文件中的函数地址,并把其转换为一个函数指针。然后,使用该函数指针便可调用 DLL 文件中的函数。

步骤三:编译运行

在 VS 中编译运行上面的代码,便可看到调用 DLL 函数成功的结果。

总结

C++ 中导入 DLL 文件需要用到 Windows API 中的 LoadLibrary 函数和 GetProcAddress 函数。先要载入 DLL 文件,然后获取 DLL 文件中函数的地址,并将其转换为函数指针。最后,通过该函数指针调用 DLL 文件的函数即可。

这仅仅是 C++ 中导入 DLL 文件的基础知识。如何在 DLL 文件中导出函数、如何在 C++ 中使用结构体等等,都是深入研究的问题。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复