2013-12-20 3 views
0

Когда я пытаюсь скомпилировать msgpack под окнами с Visual Studio 2008 Professional версия делаяНе удается скомпилировать расширение msgpack Python под окнами

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 скомпилирован с визуальным C++ 2008 .

Как скомпилировать расширение msgpack, чтобы я использовал быструю версию под окнами?

ответ

0

Компиляция библиотек Python на Windows действительно может быть болью.

Как правило, я использую предварительно скомпилированные двоичные файлы provided by Christoph Gohlke. Кажется, у него есть build of msgpack.

+0

Он действительно, но я хочу, чтобы иметь возможность составлять их самостоятельно. Я использовал его двоичные файлы, но пришло время узнать, как это сделать в Windows. Вот о чем идет речь. – mahonya

+0

Удачи тогда :-). – Chris

0

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; 

Try, чтобы проверить, что int8_t является typedefed в обоих заголовках.

+0

А, интересно, я задам конкретный вопрос. Может быть хорошим обходным решением, если гарантируется бесперебойность работы. – mahonya

+0

Обновление: вот вопрос: http://stackoverflow.com/questions/20710532/can-i-use-mingw-compiled-python-extensions-together-with-visual-c-compiled-one Я проверю заголовки основанный на ваших советах – mahonya

Смежные вопросы