Witam,
Mam niecodzienny problem z DLL.
Wczoraj normalnie piszę kod, normalnie zapisuję pracę i wyłączam komputer.
Dzisiaj odpalam, kompiluję i aplikacja wywala błąd.
Trochę dziwne bo nic w pliku nie modyfikowałem.
Trochę pogrzebałem w pliku, wszędzie gdzie się dało dałem warunki sprawdzające czy wszystko się poprawnie wczytało i oto co udało mi się dowiedzieć.
Sam kod odpowiedzialny za linkowanie biblioteki do apki zwraca wartość niezerową (czyli biblioteka ładuję się poprawnie do apki):
HINSTANCE hInstDLL = LoadLibrary("KeyLogDll.dll");
if (hInstDLL != NULL)
MessageBox(0, "Biblioteka dołaczona pomyślnie", NULL, MB_OK);
Natomiast wartość zerową (czyli błąd) zwraca pobranie procedury z dll. Co jest jak już mówiłem cholernie dziwne bo nic przy tym kodzie nie zmieniałem:
procedura_dll = (mojaprocedura) GetProcAddress(hInstDLL, "hack_dll");
Sam kod tej procedury w pliku dll wygląda tak:
void hack_dll()
{
hack = SetWindowsHookEx(WH_KEYBOARD, procedure_test, g_hInst, 0);
if (hack == NULL)
MessageBox(0, "hak źle założony", NULL, MB_OK);
}
Czyli po prostu zakładanie haka globalnego.
Dodam, że ten MessageBox nawet się nie wyświetla.. zresztą nic dziwnego skoro kod odpowiedzialny za ładowanie tej procedury zwraca wartość zerową.
Nie mam pojęcia czym to może być spowodowane. Zmieniałem rodzaj kompilacji z debug na relase i na odwrót. Usuwałem pliki, kopiowałem kod do innego projektu i nic.. ciągle to samo.