Не могу скомпилировать расширение msgpack Python под Windows
Когда я пытаюсь скомпилировать MSGPACK под Windows с профессиональной версией Visual Studio 2008, выполнив
Python setup.py build
я получил
msgpack/_packer.cpp(316) : fatal error C1083: Cannot open include file: 'stdint.
h': No such file or directory
По-видимому, это связано с тем, что компилятор MS не имеет надлежащей поддержки C, поэтому я скачал последние типы msinttypes, которые должны решить эту проблему. Если я размещу inttypes.h и stdint.h под C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include
и попробуйте снова скомпилировать, я получаю:
c:\work\tools\msgpack-python-0.4.0\msgpack-python-0.4.0\msgpack\sysdep.h(24) : e
rror C2371: 'int8_t' : redefinition; different basic types
C:\Program Files\Microsoft SDKs\Windows\v6.0A\include\stdint.h(87) : see
declaration of 'int8_t'
Основываясь на поиске в Google, похоже, что какой-то другой заголовочный файл где-то определяет int8_t. На самом деле, если я не ошибаюсь, ошибка говорит о том, что это stdint.h, это файл заголовка, который я добавил из msinttypes, чтобы решить проблему в первую очередь. На этой машине также установлена профессиональная версия vs.net 2010, но я не уверен, что это может вызвать проблемы.
Учитывая тот факт, что у меня есть полная установка Python, работающая под Windows на этом компьютере, я не могу переключиться на mingw под Windows, потому что это, вероятно, вызовет проблемы, так как весь код Python 2.7 скомпилирован с Visual C++ 2008.
Как мне скомпилировать расширение msgpack, чтобы я использовал быструю версию под windows?
2 ответа
Python опирается на C ABI, я думаю, что вы можете использовать его с MinGW без проблем.
Я не знаю, почему оба заголовка определяют int8_t
но есть что-то более интересное. В Visual Studio 2008 _MSC_VER должен равняться 1500, поэтому sysdep.h
определяет это как __int8
, Но stdint.h
из msinttypes также следует сделать это:
#if (_MSC_VER < 1300)
typedef signed char int8_t;
...
#else
typedef signed __int8 int8_t;
Попробуйте проверить что int8_t
Тип определен в обоих заголовках.
Компиляция библиотек Python в Windows действительно может быть проблемой.
Я обычно использую предварительно скомпилированные двоичные файлы, предоставленные Кристофом Гольке, когда это возможно. У него, похоже, есть сборка msgpack.