Pergunta

import mymodule, ctypes
#import pygame

foo = ctypes.cdll.MyDll.foo

print 'success'

Se eu remover o comentário da import pygame esta falha com WindowsError: [Errno 182] The operating system cannot load %1. o quadro de pilha está em código de ctypes python, tentando carregar MyDll. win32 código de erro 182 é ERROR_INVALID_ORDINAL. se a importação pygame não está lá, o script é executado com êxito.

Update: Se eu executá-lo fora do depurador, o% 1 está cheio de 'libpng13.dll', que está no diretório de trabalho e referenciado por MyDll e pygame é, certamente, colocar alguma versão da libpng. Eu não tenho nenhuma idéia de como eu iria resolver isso.

Foi útil?

Solução

Isso soa como um conflito DLL. Parece que as cargas import pygame alguns dll que não é compatível com uma dll que as necessidades MyDll. Você deve tentar depurar isso com sysinternals ProcessExplorer, ele pode mostrar quais DLLs um processo foi carregado; procurar DLLs diferentes em ambos os casos.

Outra ferramenta útil para problemas de depuração DLL é o DependencyWalker, de www.dependencywalker.com

Outras dicas

Atualização para o registro: Eu acredito que houve várias versões do libpng sendo carregado por diferentes módulos (pygame e mydll). Eu usei multiprocessamento para separar os dois módulos e dandy de tudo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top