2012-05-07 1 views
1

я искал какой-то DLL или класса, чтобы захватить информацию оборудования клиента, и, наконец, нашел его: http://www.soft.tahionic.com/download-hdd_id/index.htmlC++: Небольшая вещь о загрузке 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)); 
    } 

Я буду рад, если кто-нибудь сможет это сделать для меня, сделал некоторые исследования и все еще не смог найти ответ.

+0

Зачем вам нужно преобразовать это в C++? Почему этого кода недостаточно? –

+1

Это похоже на действительный код на C++, какую ошибку вы получаете? – Malkocoglu

ответ

4

Ваш код, вероятно, зависит от Windows и должен быть помечен как таковой. Системы Posix имели бы dlopen. ++ имена функций

C часто mangled и вы, вероятно, нужно передать искаженное имя GetProcAddress (или к dlsym на Unix или Linux).

Соглашения об именах специфичны для компилятора и системы.

+0

Так как он пытается использовать одну и ту же функцию из одной и той же библиотеки DLL в обоих случаях, я не вижу, как может быть релевант имени. –

Смежные вопросы