web-dev-qa-db-fra.com

DLL Bibliothèque de chargement - Code d'erreur 126

J'utilise la 'LoadLibrary' de l'API Windows. Lorsque j'exécute l'application, le code d'erreur 126 est généré. J'ai lu que cela pouvait être dû à des dépendances. J'ai vérifié ce qui ne va pas avec certaines applications comme Dependency Walker, mais tout était bien.

LoadLibrary dans l'application:

            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();
            }

Code du plugin:

#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");
}
}
27
Spamdark

Erreur dll Windows 126 peut avoir de nombreuses causes fondamentales. Les méthodes les plus utiles que j'ai trouvées pour résoudre ce problème sont:

  1. Utilisez Depend Walker pour rechercher les problèmes évidents (que vous avez déjà résolus). 
  2. Utilisez l'utilitaire sysinternals Process Monitor http://technet.Microsoft.com/en-us/sysinternals/bb896645 de Microsoft pour suivre tous les accès aux fichiers pendant le chargement de votre dll. Avec cet utilitaire, vous verrez tout ce que la dll essaie d’attirer et le problème peut généralement être déterminé à partir de là.
58
DanS

Cette erreur peut se produire car une bibliothèque MFC (par exemple, mfc120.dll) dont dépend le DLL est manquante dans le dossier windows/system32.

1
Iacopo Braccesi