2013-01-16 12 views
21

Używam "LoadLibrary" z Windows API, po uruchomieniu aplikacji, generuje mi kod błędu 126. Czytam, że może to być spowodowane zależnościami, sprawdziłem, co jest źle z niektórymi aplikacjami, takimi jak Dependency Walker, ale wszystko było w porządku.Biblioteka ładowań DLL - kod błędu 126

LoadLibrary w aplikacji:

  HMODULE dll_mod = LoadLibrary(L"path_to_dll"); 
      if(dll_mod==NULL){ 
       std::stringstream error; 
       error << "Could not load plugin located at:\n" << file_full.toStdString() << "\n" << "Error Code: " << GetLastError(); 
       FreeLibrary(dll_mod); 
       return error.str(); 
      } 

kod wtyczki:

#include "stdafx.h" 
#define DLL_EXPORT 
#define PLUGIN_STREAM __declspec(dllexport) 
#include <iostream> 
#include <vector> 
using std::vector; 
using std::string; 
// Init event (After the loading) 
extern "C"{ 
PLUGIN_STREAM int onInit(char* argv){ 
return 0; 
} 
PLUGIN_STREAM void pluginInfo(vector<string> & info){ 
info.push_back("media_event=false"); 
    info.push_back("status_event=false"); 
    info.push_back("send_event=true"); 
    info.push_back("plugin_name='RadioStream'"); 
    info.push_back("description='This plugin was designed for that people that wants to listen to radio music.\nYou can register your radio and play it later, also we have a gallery of radios that you can check.\nThis plugin is original of Volt and it's originally implemented in the application.'"); 
    info.push_back("success:0"); 
    info.push_back("error:1=Could not open data file"); 
    info.push_back("error:2=Could not prepare plugin"); 
    info.push_back("alert:40=Could not connect to that radio"); 
} 
} 
+0

na jakiej platformie programujesz? Właśnie wpisałem "LoadLibrary failed" w Google i automatycznie uzupełniono autouzupełnianie "LoadLibrary nie powiodło się z kodem błędu 126", dając około 41 000 wyników, w tym filmy z YouTube, jak to naprawić. czy naprawdę żaden z tych linków nie jest przydatny? –

+0

Podążyłem za kilkoma tutorialami, rozmawiali o zależnościach ... o tym, że biblioteka DLL nie istnieje, cóż, mam 4-godzinne wyszukiwanie i nie mogę tego naprawić jakimkolwiek samouczkiem, już sprawdziłem zależności. : S – Spamdark

+1

Nie jest dobrą praktyką wywoływanie 'FreeLibrary (dll_mod);' pod 'if (dll_mod == NULL)' – borisbn

Odpowiedz

46

błąd DLL systemu Windows 126 może mieć wiele przyczyn. Najbardziej użyteczne metody znalazłem debugować tego są:

  1. Zastosowanie zależność walker szukać jakichkolwiek oczywistych problemów (które już zrobione)
  2. Korzystanie z Sysinternals narzędzie Process Monitor http://technet.microsoft.com/en-us/sysinternals/bb896645 firmy Microsoft prześledzić cały dostęp do pliku, podczas gdy twoja dll próbuje załadować. Za pomocą tego narzędzia zobaczysz wszystko, co biblioteka DLL próbuje pobrać i zazwyczaj problem można ustalić z tego miejsca.
+0

Brzmi nieźle, spróbuję – Spamdark

+2

To wszystko! Dzięki temu narzędziu znalazłem błąd, dziękuję bardzo! – Spamdark

+0

@Spamdark: cieszymy się z Twojej strony. Proszę napisać, co było powodem –

1

Ten błąd może się zdarzyć, ponieważ niektóre biblioteki MFC (np. Mfc120.dll), od których zależna jest dll w systemie windows/system32.

Powiązane problemy