Мы явно вызовем DLL, как это было сделано в шаге "Шаг 41 - Явный вызов функций DLL". Создаем код для тестирования, не забываем, что нам нужно чтобы DLL была доступна.
#include "stdafx.h" #include "windows.h" #include "iostream.h" typedef VOID (WINAPI MESS)(); void main() { HINSTANCE hModule=NULL; hModule=::LoadLibrary("DllExcel.dll"); if (hModule!=NULL) { MESS* me=NULL; me=(MESS*)::GetProcAddress((HMODULE)hModule,"MyTest"); if (me!=NULL) { (*me)(); LPVOID lpMsgBuf; FormatMessage( FORMAT_MESSAGE_ALLOCATE_BUFFER | FORMAT_MESSAGE_FROM_HMODULE , hModule, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (PTSTR) &lpMsgBuf, 0, NULL ); cout << (char*)lpMsgBuf << endl; } else cout << "Error Load function" << endl; } else cout << "error load Dll" << endl; ::FreeLibrary(hModule); }
Запускаем.
Появится предусмотренное функцией диалоговое окно, а дальше сообщение о нашей ошибке.
Обратить внимание нужно на то, что передается флаг получения описания ошибки из модуля FORMAT_MESSAGE_FROM_HMODULE. Так же ошибку можно увидеть в Error LookUp.
Но при условии, что Вы добавите в модуль название DLL.
Полный код в проекте.