在win7-64位中通过mingw使用boost.python编译一些代码

2023-12-12

我决定让我的程序兼容windows环境。但是我在windows上的编程经验很少。有一些错误需要帮助。

环境:

  • 操作系统:win7-64位,
  • IDE:代码块12.11,
  • python: Python 2.7.3 Windows X86-64 安装程序 (Windows AMD64 / Intel 64 / X86-64 二进制 [1] -- 不包括源)
  • 编译器:来自codeblocks安装包的mingw。
  • 升压:升压1.52

我只复制并测试来自“.\boost_1_52_0\libs\python\example\tutorial”的“hello”代码

Code:

#include <iostream>
#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);
}

using namespace std;
int main()
{
    cout << "Hello world!" << endl;
    return 0;
}

错误信息:

mingw32-g++.exe -Wall -fexceptions  -g  -ID:\boost\include\boost-1_52 -IC:\Python27\include  -c E:\project\snail-MW\test1\main.cpp -o obj\Debug\main.o
mingw32-g++.exe -LD:\boost\lib\ -LC:\Python27\libs  -o bin\Debug\test1.exe obj\Debug\main.o  
obj\Debug\main.o: In function `inithello_ext':
E:/project/snail-MW/test1/main.cpp:11: undefined reference to `boost::python::detail::init_module(char const*, void (*)())'
obj\Debug\main.o: In function `ZNK5boost6python9type_info4nameEv':
D:/boost/include/boost-1_52/boost/python/type_id.hpp:165: undefined reference to `boost::python::detail::gcc_demangle(char const*)'
obj\Debug\main.o: In function `ZNK5boost6python15to_python_valueIRKPKcEclES5_':
D:/boost/include/boost-1_52/boost/python/converter/builtin_converters.hpp:161: undefined reference to `boost::python::converter::do_return_to_python(char const*)'
................

它还会出现一些错误,只能通过“.\boost_1_52_0\libs\python\example\tutorial”站中的“bjamtoolset=gccvariant=release”命令进行编译。


您获得了路径,但没有链接到 boost 和 python 库:

-lboost_python -lpython27

另外,您正在尝试创建一个可执行文件(这就是为什么您必须添加一个main()到示例以便编译它)。 对于 python 模块,您想要创建一个共享库,与定义的名称相匹配BOOST_PYTHON_MODULE(...)宏。 这些模块的扩展应该是.pyd.

-shared -o hello_ext.pyd

如果链接器找不到 boost_python 库,请检查您的 boost 库目录。根据您的安装,您应该有一个libboost_python.a or libboost_python-mgw??-mt-1_??.a。如果您找不到类似的东西,则必须先构建它们。 您应该决定是否要构建静态库或共享库。更多细节here.

c:\boost_1_52> b2 toolset=gcc --with-python

如果 boost 找不到你的 python 安装,这将会失败。要配置(通常是非标准位置)python, 编辑user-config.jam。这可能在你的%HOMEDRIVE%%HOMEPATH% or boost_1_52_0\tools\build\v2。 定位Python configuration在该文件中并设置正确的路径(如果 python 安装在默认位置,则不需要此步骤)。 语法是:

using python : python_version : python_base : python_incl : python_lib ;

例如:

using python : 2.7 : c:/Python27 : c:/Python27/include : c:/Python27/libs ;

如果您选择构建静态 boost python 库,则在链接程序时可能会出现其他错误。如果是这种情况,您必须表明您想要使用以下方式链接到静态库:

-DBOOST_PYTHON_STATIC_LIB

最后,编译器可能会抱怨::hypot没有被宣布。为了解决这个问题,#include <cmath>在包含 boost/python 标头之前。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在win7-64位中通过mingw使用boost.python编译一些代码 的相关文章

  • Identity Server 4:添加访问令牌的声明

    我正在使用 Identity Server 4 和隐式流 并且想要向访问令牌添加一些声明 新的声明或属性是 tenantId 和 langId 我已将 langId 添加为我的范围之一 如下所示 然后通过身份服务器请求 但我也获得了tena
  • 将 csv 文件按多列拆分为 panda 数据框

    我有一个包含多列的 tsv 文件 有 10 多列 但对我来说重要的列是名称为 user name shift id url id 的列 我想创建一个数据框 首先根据用户名分隔整个 csv 文件 即只有具有相同用户名的行才会分组在一起 从该块
  • Cython:为什么 size_t 比 int 快?

    更改某些 Cython 变量的类型int输入size t可以显着减少某些功能的时间 30 但我不明白为什么 例如 cimport numpy as cnp import numpy as np def sum int cnp int64 t
  • 将授权标头添加到 Web 参考

    我正在尝试向客户端的网络服务发出请求 我不知道客户端的底层平台 我使用 添加 Web 引用 在 Visual Studio 2010 中使用了客户端的 WSDL 并生成了我的代理类 称为 ContactService 我现在需要将如下所示的
  • 为图例中的点设置固定大小

    我正在制作一些散点图 我想将图例中的点的大小设置为固定的相等值 现在我有这个 import matplotlib pyplot as plt import numpy as np def rand data return np random
  • Nuget - 对象引用未设置为对象的实例

    我在 vs 2015 中遇到了 nuget 包管理器的问题 像Unity这样的一些包已经安装没有问题了 某些软件包 例如 EF 在安装时出现问题 像 Automapper 这样的一些软件包也有同样的问题 但是当我安装这个软件包的另一个版本时
  • 为什么全新安装后会有pip和conda包?

    All Windows 10 64 位 d l Anaconda 2 5 0 与 Python3 64 位并安装 全新安装后我输入conda list 并且 在软件包中 我看到 重复像 jupyter 1 0 0 py35 1 jupyte
  • C++:LPWSTR 在 cout 中打印为地址

    我有一个类型变量LPTSTR 我打印到std cout with lt lt 在 ANSI 系统中 不知道它是在哪里确定的 它工作得很好 它打印了字符串 现在 在 Unicode 系统中 我得到的是十六进制地址而不是字符串 那么 为什么LP
  • 如何将时间间隔划分为不同长度的部分?

    我有一个从 0 到t 我想把这个区间分成一个以2 25 2 25 1 5为周期的累积序列 方法如下 input start 0 stop 19 output sequence 0 2 25 4 5 6 8 25 10 5 12 14 25
  • 监控单个文件

    我需要监控 使用watchdog http pythonhosted org watchdog index html 单个文件 而不是整个目录 避免监视整个目录的最佳方法是什么 我想this http pythonhosted org wa
  • Request.Form 和 Request.QueryString 之间的区别?

    有人可以告诉我两者之间的确切区别吗Request Form and Request QueryString 我知道一个区别 比如 如果HTTP请求方式为POST 则用户提交的数据在申请表 收藏 如果HTTP请求方法是GET 则用户提交的数据
  • 类型别名和不完整类型

    我可能已经超出了解决这个本应简单的问题的范围 我在这里开始这个问题 在编译时获取基类的类型 https stackoverflow com questions 17735852 getting type of a base class at
  • import numpy 和 import numpy as np 之间的区别

    我明白 如果可能的话 应该使用 import numpy as np 这有助于避免由于命名空间引起的任何冲突 但我注意到虽然下面的命令有效 import numpy f2py as myf2py 以下不 import numpy as np
  • 使用非字符串作为字符串(而不是自动使用 ToString)时如何显示错误?

    建议的重复确实是一个类似的问题 然而 答案只涵盖一种选择 禁用 ToString 本身 还有其他可能的解决方案 例如让 Visual Studio 警告我 或者不调用 ToString 仔细阅读那里的答案 他认为is调用 只是解释说没有办法
  • Gridview 错误:对 Bind 的调用格式不正确

    我有以下 gridview 代码
  • 返回 ICollection 而不是 List 的真正优势是什么? [复制]

    这个问题在这里已经有答案了 我读过几篇博客文章 提到对于公共 API 我们应该始终返回 ICollection 或 IEnumerable 而不是 List 返回 ICollection 而不是 List 的真正优势是什么 Thanks 复
  • 在字典理解中为 locals() 添加下标失败并出现 KeyError [重复]

    这个问题在这里已经有答案了 我对 Python 的奇怪行为感到困惑locals 基本上我想从字典中获取一个项目locals 在字典理解中 但它失败了 这是一个非常基本的事情 所以 gt gt gt foo 123 gt gt gt bar
  • 在 python 中使用递归替代 len()

    作为 CS1301 问题的一部分 我正在尝试使用递归编写一个函数 该函数将执行与 len 完全相同的操作 但是 我有两个问题 我正在使用全局变量 但我在课程中还没有学到这一点 cs1301 自动评分器告诉我 我的函数返回 26 而不是 13
  • asp.net mvc GET 请求上的 formcollection 应该为空

    我正在发布一个简单的操作 public void Login FormCollection formCollection 即使查询字符串值很少 formcollection Count is 0 是靠行为吗 FormCollection 使
  • PyQt QFileDialog exec_ 很慢

    我正在使用自定义QFileDialog因为我想选择多个目录 但是exec 功能非常慢 我不明白为什么 我正在使用最新版本的 PyQt 代码片段 from PyQt4 import QtGui QtCore QtNetwork uic cla

随机推荐

  • 在 Visual Studio 中使用控制台应用程序的输出而不是控制台

    当使用 Eclipse 用 Ja va 编写控制台应用程序时 我看到输出被放入 IDE 本身的文本框中 而不是像 Visual Studio 中那样弹出控制台 这很方便 因为即使程序退出后 我仍然可以充分利用其中写入的文本 因为直到再次运行
  • Pandas shift - 如果满足多个条件,则获取先前的值

    我实际上已经问过这个关于 SQL 的问题 并在这里得到了一个很好的答案 SQL 如果满足使用多个先前列的条件 则 LAG 获取先前的值 但现在我需要它来养熊猫 假设我们有一个数据框 df pd DataFrame id 1 2 3 4 5
  • Python 类方法改变自身

    这不适用于我正在做的任何事情 这只是一些测试代码 因为我只是在学习类方法并且很糟糕 但是假设我有以下代码 class Test int def init self arg self arg def thing self self 10 并去
  • 将外部geojson添加到leaflet层

    我是传单和 JavaScript 的新手 我想我可以使用 geocommons 和 GeoJSON 来托管测绘项目的数据 I found 外部 GeoJSON 和 Leaflet 其他方式 本教程介绍如何使用传单插件读取外部 GeoJSON
  • 如果属性名称以 new 开头,应用程序将崩溃

    在我的项目中 我使用 coredata 其中一个实体有一个名为newTotal 在其对应的 NSManagedObject 类中 属性声明如下 property nonatomic strong NSString newTotal 如果我在
  • Yii2 如何从 url 中删除站点/索引和页面参数

    我在默认页面上使用分页 即在 yii2 中的站点 索引上 所以链接器为分页生成的 URL 看起来像这样 domain com site index page 1 我想删除站点 索引和页面参数 使其如下所示 domain com 1 我尝试在
  • WPF 网格水平对齐不起作用。尺寸不变

    我有一个堆栈 堆栈内有一个网格 当我调整窗口大小时 我需要增加堆栈和网格大小 我将 Stack 和 Grid Horizo ntalAlignment 设置为 拉伸 堆栈工作正常 但当我调整窗口大小时 网格大小不会增加 这是我的代码
  • TensorFlow 索引无效(越界)

    您好 我目前正在尝试使用自己的图像数据运行 TensorFlow 但是当我尝试运行这些函数时它崩溃了 它来自 mnist py def loss fn logits labels batch size tf size labels labe
  • opengl:如何避免纹理缩放

    我该如何申请重复无论应用的顶点数据如何 纹理始终保持其原始比例 纹理中的 1 个像素 屏幕上的 1 个像素 我意识到这不是最常见的任务 但是是否可以轻松设置 opengl 来执行此操作 或者我是否需要对尊重其原始外观的顶点数据应用某种掩码
  • java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法以选择 sqlite

    我是安卓世界的新手 我的编码有问题 这只是一个小错误 我不知道它不起作用 即使我改变了其他方法 但错误仍然是相同的错误 这里的错误发生在logcat java lang NullPointerException Attempt to inv
  • 使用 DOM 选项定位 DataTables 元素

    我无法正确定位l长度变化和f分别过滤我的右上角和左下角的输入DT datatable输出在shiny使用dom选项 代码 library shiny library DT set seed 2282018 company lt data f
  • Firebase - 限制特定用户的文件访问权限

    我正在尝试使用 Firebase 实现以下行为 用户使用 Firebase 身份验证登录 用户将文件上传到 Firebase 存储 用户输入不同用户的电子邮件地址 该用户帐户可能已经存在 如果没有 收件人会收到一封电子邮件 提示他们注册 上
  • 在不使用 LINQ 或委托的情况下对 C# 列表 <> 进行排序

    我有一个对象列表 每个对象在 3D 空间中都有一个位置 我需要按到任意点的距离对这个列表进行排序 目前我正在这样做 attachedEffectors attachedEffectors OrderBy x gt Mathf Pow x t
  • 使用 Cypher 从 Neo4j 图中提取子图

    假设我在 Neo4j 中有一个包含 5 个节点的集合 使得集合中的每个节点都连接到集合中的至少一个其他节点 我想从 Neo4j 中提取由节点集合及其交互形成的子图 目前 我正在使用一种非常原始的方法 该方法涉及尝试找到系统中每个节点与其他每
  • 在列表视图中选择 edittexts 文本。怎么办呢?我不知道

    我有一个 ListView 每行都有一个 EditText 正在工作 我需要在单击编辑文本时选择此文本以写入数字 而无需删除或移动光标 首先使用 selectAllonfocus 有效 但是 滚动列表视图后 EditText 变得疯狂并且选
  • 如何安全地处理自定义编写的 PowerShell cmdlet 中的密码?

    假设我有一个自定义 PowerShell Cmdlet 用于导出数据并使用密码对其进行加密 Cmdlet VerbsData Export SampleData public class ExportSampleData PSCmdlet
  • React Native DateTimePicker 的日期格式?

    我正在使用 React Native DateTimePicker https github com react native datetimepicker datetimepicker The onChange事件有时间戳 但我不明白它的
  • 我想在 flutter 中访问我的系统铃声

    有什么办法可以得到所有的铃声手机使用的flutter 并将所选铃声设置为我的应用程序的默认铃声 提前致谢 我设法使用本机代码完成它 首先 您将在 Flutter 端创建这些东西 here where your ringtones will
  • nuxtjs 在点击元素时添加和删除类

    我是 vue 和 nuxt 的新手 这是我需要更新的代码
  • 在win7-64位中通过mingw使用boost.python编译一些代码

    我决定让我的程序兼容windows环境 但是我在windows上的编程经验很少 有一些错误需要帮助 环境 操作系统 win7 64位 IDE 代码块12 11 python Python 2 7 3 Windows X86 64 安装程序