pygame é estragar ctypes
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.
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.