Вопрос

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).Я использовал многопроцессорную обработку для разделения двух модулей, и все отлично.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top