Проверка кодов возврата и вызов GetLastError()
освободит вас.Вы должны проверить коды возврата дважды здесь.Вы фактически проверяете коды возврата ноль раз.
hDLL = LoadLibrary(L"MYDLL.DLL");
Проверка hDLL
.Это NULL?Если это так, позвоните GetLastError()
, чтобы узнать, почему.Это может быть так же просто, как «Файл не найден».
lpGetNumber = (LPGETNUMBER)GetProcAddress((HMODULE)hDLL, "GetNumber");
Если lpGetNumber
НЕДЕЙСТВИТЕЛЕН, вызовите GetLastError()
.Он скажет вам, почему не удалось найти адрес proc.Существует несколько вероятных сценариев:
- Не существует экспортируемой функции с именем
GetNumber
- Существует экспортированная функция с именем
GetNumber
, но онане помечено extern "c"
, в результате искажение имени . hDLL
не является допустимым дескриптором библиотеки.
Если оно окажется #1 выше, вам нужно экспортировать функции, декорировав объявление с помощью __declspec(dllexport)
следующим образом:
MyFile.h
__declspec(dllexport) int GetNumber();
Если это окажется # 2 выше, вам нужноДля этого:
extern "C"
{
__declspec(dllexport) int GetNumber();
};