c++ डीएलएल लोड लाइब्रेरी-त्रुटि कोड 126




plugins dll (2)

यह त्रुटि हो सकती है क्योंकि कुछ एमएफसी लाइब्रेरी (उदाहरण के लिए mfc120.dll) जिससे DLL निर्भर है Windows / system32 फ़ोल्डर में अनुपलब्ध है।

मैं विंडोज एपीआई से 'लोड लाइब्रेरी' का उपयोग कर रहा हूं, जब मैं एप्लिकेशन चलाता हूं, तो यह मुझे एक त्रुटि कोड 126 फेंकता है। मैंने पढ़ा है कि यह निर्भरताओं के कारण हो सकता है, मैंने जांच की है कि कुछ अनुप्रयोगों जैसे कि निर्भरता वॉकर, लेकिन सबकुछ गलत है ठीक था।

आवेदन में लोड लाइब्रेरी:

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

प्लगइन कोड:

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

विंडोज़ डीएलएल त्रुटि 126 में कई रूट कारण हो सकते हैं। डीबग करने के लिए मुझे मिली सबसे उपयोगी विधियां हैं:

  1. किसी भी स्पष्ट समस्या को देखने के लिए निर्भरता वॉकर का उपयोग करें (जिसे आपने पहले से ही किया है)
  2. माइक्रोसॉफ्ट से sysinternals उपयोगिता प्रक्रिया मॉनिटर http://technet.microsoft.com/en-us/sysinternals/bb896645 उपयोग करें, जब आपका डीएल लोड करने का प्रयास कर रहा है, तो सभी फ़ाइल एक्सेस का पता लगाने के लिए। इस उपयोगिता के साथ, आप वह सब कुछ देखेंगे जो डीएलएल खींचने की कोशिश कर रहा है और आमतौर पर समस्या वहां से निर्धारित की जा सकती है।






loadlibrary