python - Boost Python 魔数

标签 python boost magic-numbers

我正在尝试包装一些 C++ 函数以在 python 中使用。例如,这里是 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: Bad magic number in C:\hello_ext.pyc

我已经使用另一个论坛的方法检查了魔数(Magic Number),它似乎是错误的。我用谷歌搜索,但无法找到有关此错误消息的任何有用信息。我怀疑这是我的 Visual Studio 项目文件中的错误设置,或者可能是我编译 boost 的方式有问题?

我使用的是 Visual Studio 2010 Service Pack 1、Python 2.7.3 和 boost 1.53

我使用以下选项编译了 boost。

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

最佳答案

当你编译 boost python 时,你应该得到一个共享库(例如我的机器上的 *.so),而不是 .pyc 文件。

这是一个关于如何构建 boost python 扩展的页面: http://wiki.python.org/moin/boost.python/BuildingExtensions

关于python - Boost Python 魔数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15232019/

相关文章:

python - 在 Mac OS X 中安装 Avro

c++ - basic_socket_acceptor 接口(interface)在 boost 1.66 中发生了变化……这是一个错误吗?

bit-manipulation - 这种神奇的位计数方法是如何工作的?

python - Colab - python 代码中的 input() 框太长,所以我需要回滚才能阅读问题

python - 必须使用元组的情况

python - 如何使用 python 与网页交互?

c++ - 使用 Boost 公开静态常量

c++ - 用C++高效地读取部分文本

java - 小程序的 .jar 搞砸了?

java - 查找硬编码(魔术)数字和字符串