it-swarm-id.com

DLL Muat Perpustakaan - Kode Kesalahan 126

Saya menggunakan 'LoadLibrary' dari Windows API, ketika saya menjalankan aplikasi, ia melempar saya kode kesalahan 126. Saya membaca bahwa itu mungkin disebabkan oleh dependensi, saya memeriksa apa yang salah dengan beberapa aplikasi seperti Dependency Walker, tetapi semuanya baik-baik saja.

LoadLibrary dalam aplikasi:

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

Kode 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

Windows dll kesalahan 126 dapat memiliki banyak penyebab root. Metode yang paling berguna yang saya temukan untuk debug ini adalah:

  1. Gunakan dependency walker untuk mencari masalah yang jelas (yang sudah Anda lakukan .__) 
  2. Gunakan utilitas sysinternals Process Monitor http://technet.Microsoft.com/en-us/sysinternals/bb896645 dari Microsoft untuk melacak semua akses file saat dll Anda mencoba memuat. Dengan utilitas ini, Anda akan melihat segala sesuatu yang dll berusaha untuk menarik dan biasanya masalahnya dapat ditentukan dari sana.
58
DanS

Kesalahan ini dapat terjadi karena beberapa pustaka MFC (mis. Mfc120.dll) dari mana DLL bergantung hilang di folder windows/system32.

1
Iacopo Braccesi