문제

import mymodule, ctypes
#import pygame

foo = ctypes.cdll.MyDll.foo

print 'success'

내가 무책임한다면 import pygame 이것은 실패합니다 WindowsError: [Errno 182] The operating system cannot load %1. 스택 프레임은 CTypes Python 코드로되어 있으며 MyDLL을로드하려고합니다. Win32 오류 코드 182는입니다 ERROR_INVALID_ORDINAL. Pygame 가져 오기가 없으면 스크립트가 성공적으로 실행됩니다.

업데이트 : 디버거 외부에서 실행하면 %1은 'libpng13.dll'으로 채워져 있으며,이 디렉토리에 있고 mydll에서 참조되는 'libpng13.dll'으로 채워지며 Pygame은 일부 버전의 libpng를로드하고 있습니다. 나는 이것을 어떻게 해결할 것인지 전혀 모른다.

도움이 되었습니까?

해결책

이것은 DLL 충돌처럼 들립니다. 그것은 것 같습니다 import pygame DLL과 호환되지 않는 일부 DLL을로드합니다. MyDll 필요합니다. sysinternals processexplorer로 이것을 디버깅해야합니다. 프로세스가로드 된 DLL을 보여줄 수 있습니다. 두 경우 모두 다른 DLL을 찾으십시오.

DLL 문제를 디버그하는 또 다른 유용한 도구는 의존성 워커입니다. www.dependencywalker.com

다른 팁

레코드에 대한 업데이트 : 여러 버전의 libpng가 다른 모듈 (pygame 및 mydll)에 의해로드되고 있다고 생각합니다. 멀티 프로세싱을 사용하여 두 모듈과 모든 것이 댄디를 분리했습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top