Domanda

import mymodule, ctypes
#import pygame

foo = ctypes.cdll.MyDll.foo

print 'success'

se ho Rimuovere il commento dalla import pygame questo fallisce con WindowsError: [Errno 182] The operating system cannot load %1. lo stack frame è in code ctypes pitone, cerca di caricare MyDll. win32 codice di errore 182 è ERROR_INVALID_ORDINAL. se l'importazione Pygame non c'è, lo script viene eseguito con successo.

Aggiornamento: Se corro fuori del debugger, il% 1 è pieno di 'libpng13.dll', che si trova nella directory di lavoro e referenziato da MyDll, e pygame è certamente caricando qualche versione di libpng. Non ho idea di come avrei risolvere questo.

È stato utile?

Soluzione

Questo suona come un conflitto dll. Sembra che import pygame carica alcune DLL che non è compatibile con una DLL che MyDll esigenze. Si dovrebbe cercare di eseguire il debug di questo con Sysinternals ProcessExplorer, può mostrare che le DLL di un processo è stato caricato; cercare diverse DLL in entrambi i casi.

Un altro strumento utile per problemi di debug DLL è il dependencywalker, da www.dependencywalker.com

Altri suggerimenti

Aggiornamento per la cronaca: Credo che c'erano più versioni di libpng carico dai diversi moduli (pygame, e mydll). Ho usato multiprocessing per separare i due moduli e di tutto Dandy.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top