C++:关于加载DLL和调用函数的一件小事
我正在寻找一些dll或类来获取客户端的硬件信息,最后找到了它: 有没有人能告诉我如何执行与下面相同的操作来调用该函数? 我在C语言中使用了这段代码,它可以正常工作。现在我不能把它转换成C++。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
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中的相同函数,我不知道名字的修饰是什么相关的。