多个cpp文件生成so_boostpython:从多个.cpp文件创建一个模块(.so)

我开始在C++中编写一些我想在Python代码中调用的模块。为此,我使用boostpython。随着代码的增长,我决定将其分成几个.cpp文件。现在,我有了这样的东西:

食品.cpp#include "Bar.hpp"

#include "Baz.hpp"

#include

using namespace boost::python;

BOOST_PYTHON_MODULE(foo){

def("help", help);

class_("Bar", init<:list>())

.def("add", &Bar::add)

.def("show", &Bar::show);

}

酒吧cpp

^{pr2}$

巴水电站#ifndef Bar_hpp

#define Bar_hpp

#include

#include

#include

namespace bp=boost::python;

class Bar{

private:

std::vector<:string> items;

public:

Bar(bp::list list);

~Bar();

void add(std::string x);

bp::list show();

};

#endif

巴兹.cpp#include

#include

#include

namespace bp=boost::python;

//C++ vector to Python list

template

bp::list toPythonList(std::vector vector) {

typename std::vector::iterator iter;

bp::list list;

for (iter = vector.begin(); iter != vector.end(); ++iter) {

list.append(*iter);

}

return list;

}

//Python list to C++ int vector

std::vector toCppVectorInt(bp::list list){

std::vector vector;

for (int i=0;i !=bp::len(list) ;i++){

vector.push_back(bp::extract((list)[i]));

}

return vector;

}

//Python list to C++ string vector

std::vector<:string> toCppVectorStr(bp::list list){

std::vector<:string> vector;

for (int i=0;i !=bp::len(list) ;i++){

vector.push_back(bp::extract<:string>((list)[i]));

}

return vector;

}

std::string help(){

return "some help information ";

}

巴兹水电站#ifndef Baz_hpp

#define Baz_hpp

#include

#include

#include

namespace bp=boost::python;

template

bp::list toPythonList(std::vector vector);

//Python list to C++ int vector

std::vector toCppVectorInt(bp::list list);

//Python list to C++ string vector

std::vector<:string> toCppVectorStr(bp::list list);

std::string help();

#endif

我的设置.py文件:from distutils.core import setup

from distutils.extension import Extension

setup(name="PackageName", ext_modules=[Extension("foo",["foo.cpp"],

libraries = ["boost_python"])

])

编译时使用:python setup.py build

我得到文件福索(编译无错误地终止)。不幸的是,它不起作用。当我试图在Python解释器中使用它时,我收到了这样的效果:Python 2.7.6 (default, Jun 22 2015, 17:58:13)

[GCC 4.8.2] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> import foo

Traceback (most recent call last):

File "", line 1, in

ImportError: ./foo.so: undefined symbol: _ZN3NNB3addESs

>>>

我应该在代码中更正什么?在

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/304098.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SSH远程终端连接数问题

系统 linux &#xff08;Debian&#xff09; 存在问题&#xff1a;SSH终端连接数最大为10个 解决方案&#xff1a; 1) 修改/etc/ssh/sshd_config中#MaxStartups 10:30:60&#xff0c;将其改为MaxStartups 1000 2) 重启SSH服务&#xff0c;/etc/init.d/ssh restar…

Win10 Terminal + WSL 2 安装配置指南

自从 Windows Terminal 正式发布后就再没有用过 Windows 系统自带的终端了。主要是 Terminal 简洁且灵活&#xff0c;更重要的是支持特殊字体&#xff0c;通过一些简单的配置可以使得终端看起来更舒适养眼。自从 Win 10 有了 Linux 子系统&#xff08;WSL&#xff09;&#xff…

如何快速解剖数据背后隐藏的信息

1946年2月16日&#xff0c;是一个值得纪念的日子。在这一天&#xff0c;人类历史上真正意义上的第一台电子计算机诞生了&#xff0c;此后计算机便随着科技的发展以强大的生命力飞速发展着。而作为用来定义计算机程序的形式语言——编程语言也紧跟计算机其后蓬勃发展&#xff0c…

mysql改密码脚本_mysql密码修改脚本

网上搜索&#xff1a; mysql密码修改工具 title 护卫神MySQL密码修改工具 echo off color 0a ECHO ┏━━━━━━━━━━┥ 护卫神www.huweishen.com ┝━━━━━━━━━┓ ECHO ┃ 提示: ┃ E…

来,Consul 服务发现入个门(一看就会的那种)

前言在微服务架构中&#xff0c;对于一个系统&#xff0c;会划分出多个微服务&#xff0c;而且都是独立开发、独立部署&#xff0c;最后聚合在一起形成一个系统提供服务。当服务数量增多时&#xff0c;这些小服务怎么管理&#xff1f;调用方又怎么能确定服务的IP和端口&#xf…

深入理解alias, alias_method和alias_method_chain

对于alias, alias_method, alias_method_chain的深入理解是有益的&#xff0c;因为rails3的源码里很多地方使用了alias_method_chain的魔法。 有人评论说alias_method_chain使用的过多不好&#xff0c;具体怎么不好&#xff0c;是后话了&#xff0c;这篇文章集中在理解这3个方法…

mysql数据库的安装和配置文件_MySQL 数据库安装与配置详解

目录一、概述MySQL 版本&#xff1a;5.7.17客户端工具&#xff1a;NavicatforMySQL** 二、MySQL 安装**安装条件&#xff1a;如果 Windows Server 2003 在安装.net framework4.0 安装过程中报错&#xff1a; net framework 4.0 安装时提示产生阻滞问题:运行安装程序前&#xff…

Magicodes.IE Excel合并行数据导入教程

说明Magicodes.IE.Excel目前已支持合并行单元格导入&#xff0c;如本篇教程所示。安装包Magicodes.IE.ExcelInstall-PackageMagicodes.IE.Excel添加Dto参考示例代码如下所示&#xff1a;public class MergeRowsImportDto {[ImporterHeader(Name "学号")]public long…

2010.7.27 OnDraw与OnPaint有什么区别

引用&#xff1a;http://wenku.baidu.com/view/bc9b1c661ed9ad51f01df2ab.html OnPaint是WM_PAINT消息的消息处理函数&#xff0c;在OnPaint中调用OnDraw&#xff0c;一般来说&#xff0c;用户自己的绘图代码应放在OnDraw中。 OnPaint()是CWnd的类成员&#xff0c;负责响应WM_P…

D轮融资1亿美金,6亿美金估值,3位计算机学霸如何带领海归团队创造业内神话?!

顺为资本在创始合伙人雷军及许达来的带领下成功领投了51Talk、丁香园、爱奇艺、一起作业等超级公司有近20家公司估值超过10亿美元如今顺为资本为何愿意投资这家公司&#xff1f;酷家乐6年破6亿美金的公司估值17年全年营收超3亿有着设计师300万这家以家居云设计为核心的创业公司…

linux下mysql案例_Linux下安装MySQL多实例

环境说明&#xff1a;Centos 6.6 64位mysql 使用最新版本5.7.16版本这里安装两个MySQL实例&#xff0c;分别使用3306/3307端口号目录结构&#xff1a;/data/mysql/mysql3306/data/mysql/mysql3306/data/data/mysql/mysql3307/log/data/mysql/mysql3306/tmp执行命令&#xff1a;…

Navicat

作为Oracle, MySQL, Sqlite, PostgreSQL的统一客户端&#xff0c;Navicat无疑是最方便简洁的&#xff0c;而且界面非常友好。导入导出支持的格式也很全。 在连Oracle的时候&#xff0c;会报错说字符集不支持。只要手工指定OCI就好&#xff0c;方法如下&#xff1a; 在OCI libra…

分布式链路追踪框架的基本实现原理

目录分布式追踪分布式系统分布式追踪分布式追踪有什么用呢什么是分布式追踪Dapper分布式追踪系统的实现跟踪树和 spanJaeger 和 OpenTracingOpenTracing 数据模型Span 格式TraceOpenTracingJaeger 结构SpanOpenTracing API分布式追踪什么是分布式追踪分布式系统当我们使用 Goog…

mysql外键约束创建及删除_MySQL中的外键的创建,约束和删除

一、外键的创建语法一&#xff1a;后续添加方法alter table 表名 add constraint 约束名 foreign key(当前表中约束的字段) references 主表表名(要约束的字段名);alter table student add constraint fk_class_student foreign key(cls_id) class(cls_id) on update cascade o…

不爱读书怎么办?用这个新奇的方法,熟知137亿年来的地球通史

今天&#xff0c;小木为模友们挑选的小荐货&#xff1a;《地球通史墙书》第一次接触《地球通史》墙书的时候&#xff0c;虽然“地球通史”的概念非常吸引我&#xff0c;但“墙书”的叫法怎么听都像是一个噱头&#xff0c;所以小木一直有些莫名的排斥&#xff0c;直到在小天把试…

测试驱动开发简介

本文节选自《测试驱动的面向对象软件开发》 第1章第4节“测试驱动开发简介” TDD核心的循环是&#xff1a;写一个测试&#xff1b;写一些代码让测试通过&#xff1b;重构代码&#xff0c;使被测试特征的实现尽可能简单。重复这个过程&#xff0c;如图1-1所示。 图1-1基本TDD循环…

在 .NET 中使用 Flurl 高效处理Http请求

简介官方介绍&#xff0c;Flurl是一个现代的&#xff0c;流利的&#xff0c;支持异步的&#xff0c;可测试的&#xff0c;可移植的&#xff0c;URL增强和Http客户端组件。Url构建现在有一个登录的接口&#xff0c;地址如下&#xff1a;https://www.some-api.com/login?nameLee…

java jdbc 删除_java使用jdbc实现各种类型添加删除修改数据

项目描述上次为大家分享了使用jdbc实现各种类型查询数据&#xff0c;这次为大家分享使用jdbc实现各种类型添加、删除、修改数据运行环境jdk8tomcat7mysql项目技术(必填)jdbcdao层数据库文件DROP TABLE IF EXISTS class;CREATE TABLE class (id int(11) NOT NULL auto_increment…

图像还可以这样玩!如何用波的算法处理图像

我对图像处理一直很感兴趣&#xff0c;曾经写过好几篇博客。前几天读到一篇文章&#xff0c;它提到图像其实是一种波&#xff0c;可以用波的算法处理图像。我顿时有一种醍醐灌顶的感觉&#xff0c;从没想到这两个领域是相关的&#xff0c;图像还可以这样玩&#xff01;下面我就…

[存档]CxServer的项目周期管理

2019独角兽企业重金招聘Python工程师标准>>> 主题&#xff1a;大学生创新性实验计划 项目周期管理 作者&#xff1a;宋志民备注&#xff1a;本文为《 基于CxServer的大学生科学研究项目管理实践探索》的一部分 内容&#xff1a; 一般情况下大学生科研计划的种类较多…