Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++:关于加载DLL和调用函数的一件小事_C++_C_Windows_Hardware - Fatal编程技术网

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

C++:关于加载DLL和调用函数的一件小事,c++,c,windows,hardware,C++,C,Windows,Hardware,我正在寻找一些dll或类来获取客户端的硬件信息,最后找到了它: 有没有人能告诉我如何执行与下面相同的操作来调用该函数? 我在C语言中使用了这段代码,它可以正常工作。现在我不能把它转换成C++。 char* (__stdcall *GetIDESerialNumber)(BYTE); HINSTANCE DllInst = NULL; if (DllInst == NULL) DllInst = LoadLibrary("hardwareid.dll"); if (DllInst

我正在寻找一些dll或类来获取客户端的硬件信息,最后找到了它:

有没有人能告诉我如何执行与下面相同的操作来调用该函数? 我在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

在Unix或Linux上,C++函数名通常是错误的,您可能需要将错误的名称传递给GetProcAddress或dlsym

名称混乱约定是特定于编译器和系统的。

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

在Unix或Linux上,C++函数名通常是错误的,您可能需要将错误的名称传递给GetProcAddress或dlsym


Mungle约定的名称是编译器和系统特定的。

为什么你需要把这个压缩到C++?为什么这个代码不够?这似乎是有效的C++代码,你得到了什么错误?为什么需要将它压缩到C++?为什么这个代码不够?这似乎是有效的C++代码,你会得到什么错误?因为他试图在同一个DLL中使用相同的函数,所以我不知道名字的修饰是什么相关的。因为他试图在这两种情况下使用同一个DLL中的相同函数,我不知道名字的修饰是什么相关的。