it-swarm-eu.dev

DLL Load Library - Kód chyby 126

Používám 'LoadLibrary' z Windows API, když spouštím aplikaci, vyvolá mi chybový kód 126. Četl jsem, že to může být způsobeno závislostmi, zkontroloval jsem, co je špatně s některými aplikacemi jako je závislost Walker, ale všechno bylo dobře.

LoadLibrary v aplikaci:

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

Kód zásuvného modulu:

#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

Chyba dll systému Windows 126 může mít mnoho příčin. Nejužitečnější metody, které jsem našel pro ladění, jsou:

  1. Použijte walker závislostí a podívejte se na nějaké zjevné problémy (které jste Už udělali) 
  2. Pomocí nástroje sysinternals Process Monitor http://technet.Microsoft.com/en-us/sysinternals/bb896645 od společnosti Microsoft sledovat všechny přístup k souborům, zatímco vaše dll se pokouší načíst. S tímto nástrojem uvidíte vše, co se dll snaží vytáhnout dovnitř a obvykle je možné problém určit.
58
DanS

K této chybě může dojít, protože některé knihovny MFC (např. Mfc120.dll), ze kterých je závislý DLL, chybí ve složce windows/system32.

1
Iacopo Braccesi