Отказ от ответственности: я новичок в программировании Windows, поэтому некоторые из моих предположений могут быть неверными. Пожалуйста, поправьте меня, если так.
Я разрабатываю оболочку Python для C API, используя ctypes. API поставляется с 64 и 32 DLL / LIB. Я могу успешно загрузить DLL, используя ctypes.WinDLL ('TheLibName'), вызывать функции и т. Д. И т. Д.
Однако некоторые функции делали не так, как должны. При дальнейшем исследовании выясняется, что используется 32-битная DLL, что и вызывает непредвиденное поведение.
Я пытался использовать ctypes.WinDLL ('TheLibName64'), но модуль не найден. Я попытался зарегистрировать DLL с помощью regsrv32, но он сообщает, что нет точки входа (он также сообщает об отсутствии точки входа, когда я пытаюсь зарегистрировать TheLibName, который равен , найденный WinDLL ().
DLL поставляется с примером проекта в Visual Studio (у меня 0 опыта работы с VS, поэтому еще раз, пожалуйста, исправьте меня здесь), который создает 32- и 64-битные версии примера проекта. В файле .vcsproj конфигурации для 64-битной версии включают в себя:
AdditionalDependencies="TheLibName64.lib"
в разделе VCLinkerTool.
В windows / system32 есть как TheLibName.dll / .lib, так и TheLibName64.dll / .lib.
Так что мне кажется, что теперь моя проблема состоит в том, чтобы загрузчик DLL Python ctypes загружал эти необязательные зависимости при загрузке DLL. Однако я не могу найти какую-либо информацию об этом (возможно, потому что, как дремлющий нуб, я не знаю правильной терминологии) в документации по ctypes.
Есть ли способ сделать это в ctypes? Я поступаю об этом совершенно неправильно? Будем весьма благодарны за любую помощь или общую информацию о необязательных зависимостях DLL и о том, как они загружаются в Windows.
Спасибо