2013-01-16 2 views
21

Windows API에서 'LoadLibrary'를 사용하고 있는데 응용 프로그램을 실행할 때 오류 코드 126이 발생합니다. 종속성으로 인해 발생할 수 있다는 것을 읽었습니다. 종속성 워커 (Dependency Walker)와 같은 일부 응용 프로그램에서는 잘못되었지만 모든 것이 잘되었습니다. 응용 프로그램의DLL로드 라이브러리 - 오류 코드 126

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

프로그래밍중인 플랫폼은 무엇입니까? 나는 단지 "LoadLibrary failed"를 구글에 입력했고, 즉시 "LoadLibrary failed with error code 126"으로 자동 완성되었고,이를 해결하는 방법에 관한 YouTube 비디오를 포함하여 41.000의 결과를 주었다. 실제로 유용한 링크가 아닙니다. –

+0

몇 가지 자습서를 따랐는데, 종속성에 대해 이야기했습니다. dll이 존재하지 않는다는 것에 대해 말입니다. 4 시간 동안 검색을 했으므로 어떤 자습서로도 문제를 해결할 수 없으며, 이미 종속성을 확인했습니다 .... : S – Spamdark

+1

'if (dll_mod == NULL)'에서'FreeLibrary (dll_mod);를 호출하는 것은 좋지 않습니다. – borisbn

답변

46

윈도우 DLL 오류 (126)는 다수의 근본 원인이있을 수 있습니다. 나는이 디버깅을 발견 가장 유용한 방법은 다음과 같습니다

  1. 사용 종속성 워커 추적 Microsoft에서 http://technet.microsoft.com/en-us/sysinternals/bb896645 모니터 (당신 이미 수행 한) 명백한 문제
  2. 사용하여 시스 인 터널 유틸리티 프로세스를 찾기 위해 귀하의 DLL이로드하려고하는 동안 모든 파일 액세스. 이 유틸리티를 사용하면 dll이 가져 오려고하는 모든 것을 볼 수 있으며 대개 문제는 거기에서 확인할 수 있습니다.
+0

그건 좋은 소리, 아픈 시도해보십시오 – Spamdark

+2

그게 다야! 그 유틸리티로 나는 오류를 찾았습니다, 정말 고마워요! – Spamdark

+0

@Spamdark : 우리는 당신을 기쁘게 생각합니다. 이유는 무엇입니까 게시하십시오. –

1

이 오류는 dll이 종속 된 일부 MFC 라이브러리 (예 : mfc120.dll)가 windows/system32에 없기 때문에 발생할 수 있습니다.