2009-04-24 3 views
0

플러그인을 만들었습니다. 그것은 타사 라이브러리 (wxWidgets)를 사용하는 DLL (런타임 동적 링크)이며 또한 동적으로 링크합니다. 호스트 소프트웨어가 플러그인을 검사하는 것처럼 보이지만 내 보낸 기능은 호출되지 않습니다. DependencyWalker를 사용하여 모든 종속성을 검사했습니다.DLL에서 동적 연결 라이브러리 (wxWidgets)를 사용할 때의 문제

디버거에서 플러그인이로드되었지만 DllMain이 호출되지 않고 플러그인이 언로드되었음을 알 수 있습니다.

내 보낸 함수를 인식하고 호출 한 LoadLibrary 및 GetProcAddress를 사용하여 간단한 테스트 응용 프로그램에서 플러그인을로드하려고 시도했습니다.

정적으로 연결된 wxWidgets 링크가 정상적으로 작동합니다.

왜 내 보낸 함수가 각각 DllMain이 호출되지 않았는지 또는 전체 DLL로드 프로세스를 모니터링 할 수있는 도구를 지적 할 수있는 사람이 있습니까?

답변

0

플러그인을로드하기 전에 wxWidgets가 프로세스 주소 공간에 이미로드 된 경우 (호스트 응용 프로그램이이를 수행 할 수 있거나 이전에로드 된 wxWidgets에 연결된 다른 플러그인이있을 수 있음), 다음과 같은 경우가 발생할 수 있습니다. 그것은 플러그인이 필요로하는 진입 점 중 일부가 누락 된 또 다른 버전입니다. DependencyWalker 또는 WinDbg에서 호스트 응용 프로그램을 실행하면 어떤 wxWidgets DLL이로드되었는지 보여 주어야하며 정확히 동일한 wxWidgets DLL을 사용하여 테스트 응용 프로그램에서 플러그인을로드하려고 시도 할 수 있습니다. 그것은 의존성이 누락되었는지 여부를 밝혀야합니다.

0

아마도 호스트 소프트웨어는 플러그인을로드 할 때 펑키 한 일을하고 wxWindows를 좋아하지 않을 수도 있습니다.

어쨌든 SysInternals 제품군의 ProcessExplorer를 사용하여 프로세스가 수행중인 작업을 확인하십시오.

관련 문제