1

Python で使用するためにいくつかの C++ 関数をラップしようとしています。たとえば、boost Python チュートリアルの関数は次のとおりです。

//  Copyright Joel de Guzman 2002-2004. Distributed under the Boost
//  Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt
//  or copy at http://www.boost.org/LICENSE_1_0.txt)
//  Hello World Example from the tutorial
//  [Joel de Guzman 10/9/2002]

#include <boost/python/module.hpp>
#include <boost/python/def.hpp>

char const* greet()
{
   return "hello, world";
}

BOOST_PYTHON_MODULE(hello_ext)
{
    using namespace boost::python;
    def("greet", greet);
}

これを .pyc ファイルにコンパイルして Python にインポートしようとすると、次のエラーが表示されます。

ImportError: C:\hello_ext.pyc の不正なマジック ナンバー

別のフォーラムの方法を使用してマジック ナンバーを確認しましたが、間違っているようです。グーグルで検索しましたが、このエラー メッセージに関する有用な情報を見つけることができませんでした。これは私のビジュアル スタジオ プロジェクト ファイルの設定が悪いのではないかと思います。

Visual Studio 2010 サービス パック 1、python 2.7.3、およびブースト 1.53 を使用しています。

次のオプションでboostをコンパイルしました。

b2 install toolset=msvc-10.0 variant=debug,release threading=multi link=shared runtime-link=shared --prefix="C:\boost"
4

1 に答える 1

1

boost python をコンパイルすると、.pyc ファイルではなく、結果として共有ライブラリ (たとえば、私のマシンでは *.so) が得られるはずです。

これは、boost python 拡張機能のビルド方法に関するページです: http://wiki.python.org/moin/boost.python/BuildingExtensions

于 2013-03-05T19:27:02.903 に答える