C++:关于加载 DLL 和调用函数的一件小事

C++: A small thing about loading a DLL and calling a function

本文关键字:函数 一件 调用 DLL 于加载 C++ 加载      更新时间:2023-10-16

我一直在寻找一些dll或类来获取客户端的硬件信息,最后找到了:http://www.soft.tahionic.com/download-hdd_id/index.html

谁能告诉我如何做同样的事情,调用函数?我在 C 中使用了这段代码,它可以工作。现在我无法将其转换为C++。

  char* (__stdcall *GetIDESerialNumber)(BYTE);
  HINSTANCE DllInst = NULL;
  if (DllInst == NULL) DllInst = LoadLibrary("hardwareid.dll");
  if (DllInst)
  {
        GetIDESerialNumber = (char* (__stdcall*)(BYTE))GetProcAddress(DllInst, "GetIDESerialNumber");
        printf(GetIDESerialNumber(0)); 
  }

如果有人能为我做到这一点,做了一些研究,但仍然没有找到答案,我会很高兴。

您的代码可能是特定于Windows的,应该这样标记。Posix系统将dlopen.

C++函数名称经常被篡改,您可能需要将损坏的名称传递给GetProcAddress(或在 Unix 或 Linux 上传递dlsym)。

名称重整约定是特定于编译器和系统的。