0

Visual Studio 2008 Professional バージョンを使用して Windows でmsgpackをコンパイルしようとすると、

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 を定義している他のヘッダー ファイルのように見えます。実際、私が間違っていなければ、最初に問題を修正するために msinttypes から追加したヘッダー ファイルである stdint.h であるというエラーが表示されます。このマシンには vs.net 2010 プロフェッショナルもインストールされていますが、それが問題を引き起こす可能性があるかどうかはわかりません。

このマシンの Windows で完全な Python セットアップを実行していることを考えると、Windows で mingw に切り替えることはできません。これは、すべての Python 2.7 コードが Visual C++ 2008 でコンパイルされているため、問題が発生する可能性があるためです。

Windows で高速バージョンを使用できるように msgpack 拡張機能をコンパイルするにはどうすればよいですか?

4

2 に答える 2

0

Windows で Python ライブラリをコンパイルするのは、実に骨の折れる作業です。

私は通常、可能な限り、Christoph Gohlke が提供するコンパイル済みのバイナリを使用します。彼は msgpack のビルドを持っているようです。

于 2013-12-20T18:41:26.097 に答える
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;

int8_t両方のヘッダーで型定義されているものを確認してください。

于 2013-12-20T18:42:53.020 に答える