pygame портит ctypes
Вопрос
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, и pygame, безусловно, загружает какую-то версию libpng.Я понятия не имею, как бы я решил эту проблему.
Решение
Это звучит как конфликт dll.Кажется , что import pygame
загружает некоторую dll, которая несовместима с dll, которая MyDll
потребности.Вам следует попробовать отладить это с помощью sysinternals ProcessExplorer, он может показать, какие библиотеки DLL загрузил процесс;ищите разные библиотеки dll в обоих случаях.
Другим полезным инструментом для отладки проблем с dll является dependencywalker, из www.dependencywalker.com
Другие советы
Обновление для записи:Я полагаю, что было несколько версий libpng, загружаемых разными модулями (pygame и mydll).Я использовал многопроцессорную обработку для разделения двух модулей, и все отлично.