Библиотека загрузки DLL — код ошибки 126

Я использую «LoadLibrary» из Windows API, при запуске приложения выдается код ошибки 126. Я прочитал, что это может быть вызвано зависимостями, я проверил, что не так с некоторыми приложениями, такими как Dependency Walker, но все было хорошо.

LoadLibrary в приложении:

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

26

Решение

Windows DLL ошибка 126 может иметь много основных причин.
Наиболее полезные методы, которые я нашел для отладки:

  1. Используйте средство обхода зависимостей для поиска каких-либо очевидных проблем (которые вы
    уже сделано)
  2. Используйте утилиту sysinternals Process Monitor http://technet.microsoft.com/en-us/sysinternals/bb896645 от Microsoft, чтобы отслеживать весь доступ к файлам, в то время как ваша DLL пытается загрузить. С помощью этой утилиты вы увидите все, что пытается подключить dll, и обычно проблема может быть определена оттуда.
56

Другие решения

Эта ошибка может произойти из-за того, что в папке windows / system32 отсутствует некоторая библиотека MFC (например, mfc120.dll), от которой зависит DLL.

1

По вопросам рекламы [email protected]