我开始在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

>>>

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

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

  1. 多个cpp文件生成so_C++:C++的文件搜索路径

    在做大型工程的时候,除了有C++语法知识之外,还要有工程能力. 最先要具备的能力是: 理解C++文件的编译,链接过程. 明白C++头文件的搜索路径. 本文,介绍C++的文件搜索路径. 对于C++文件来 ...

  2. 多个cpp文件生成so_visual studio生成so 生成的so文件 - 电脑故障 - 服务器之家

    visual studio生成so 生成的so文件 发布时间:2017-04-16 来源:服务器之家 1. 新建一个源码文件,里面包含了返回两个整数的和的函数 如果使用C语言,新建test.c文件,并 ...

  3. 多个cpp文件生成so_荐tf_sampling_so.so等文件怎么生成(多种tf版本都可的顺利解决方法)...

    tf_sampling_so.so等文件怎么生成(多种tf版本都可的顺利解决方法) 这里以Geo-CNN的代码为例子,运行时我们可能会出现这样子的错误:忘记截图 1.没有.so文件. tf_sampl ...

  4. r生成html文件,从R中的许多html文件创建一个语料库

    这应该做到这一点.在这里,我的计算机上有一个HTML文件的文件夹(来自SO的随机样本),我用它们创建了一个语料库,然后是一个文档术语矩阵,然后完成了一些简单的文本挖掘任务. # get data se ...

  5. 关于.cpp文件包含另一个.cpp文件出错的原因以及解决办法

    今天打开自己以前写代码突然觉得在main函数中如果要用的很多自己实现的函数,如果把它们都放在main.cpp文件中太臃肿了.调试起来特别不方便.能不能把这些自己实现的函数放到另外一个文件中呢? 可是又 ...

  6. include.cpp(main函数的cpp文件)文件中包含另一个.cpp文件的错误及原因

    当一个main函数的cpp文件包含另一个cpp文件,使用#include "data.cpp"  是不可以的,例如下面 include.cpp #include <stdio ...

  7. 将类的定义放在头文件中,把成员函数的实现代码放在一个cpp文件中

    将类的定义放在头文件中,把成员函数的实现代码放在一个cpp文件中 写这种.h和.cpp文件分开的大程序,虽然对很多人来说很简单,对自己来说算是第一次吧,好好学C++,加油~ 题目:定义Point类,由 ...

  8. Android适配--最详细的限定符屏幕适配方案解析 附带values-Dimens文件生成工具

    屏幕适配 前言 适配缘由 相关概念 适配方案 db适配 设计最大分辨率图片 屏幕分辨率限定符(宽高限定符) dimens文件生成原理 使用样例1 使用样例2 dimens文件生成脚本 总结 最小宽度限 ...

  9. python代码编译成pyd_python如何编译py文件生成pyc、pyo、pyd以及如何和C语言结合使用...

    python执行py文件的流程 当我们执行一个py文件的时候,直接python xx.py即可,那么这个流程是怎么样的呢.先说明一下,python执行代码实际上是先打开文件然后执行里面的代码,所以文件 ...

最新文章

  1. HLS中m3u8格式规范解读
  2. AgileConfig - 轻量级配置中心1.2.0发布,全新的UI
  3. 2018数学建模A题的简单指导
  4. 【STM32】HAL库 STM32CubeMX教程十---DAC
  5. 使用多线程进行网图下载
  6. 变量 重复声明_JS:定义变量的var、let有何操作?(360°无死角)
  7. $.each 中return问题
  8. 前端使用puppeteer 爬虫生成《React.js 小书》PDF并合并
  9. [转]UBB代码解析规范
  10. php 三菱plc,三菱FX系列PLC编程语言概述及之间的转换关系
  11. 如何解决u盘不能拷贝超过4G的大文件
  12. 冯雪 手术机器人的应用_外科手术机器人发展及其应用
  13. 6.1 手机时钟系统简介
  14. FINN(二)CNN,BNN及其硬件实现的背景知识
  15. Delphi-x2d 网络游戏引擎
  16. 珍珠bead_珍珠果酱直播
  17. Web前端期末大作业--响应式网络科技公司网页设计(IT网络主题-HTML+CSS+JavaScript)实现
  18. 上半年结束,46万家公司倒闭,2024太难了!
  19. ubuntu vscode 终端字体设置(字体间隔过大)
  20. 全自动照片美化软件Photolemur mac特别版

热门文章

  1. 来吧学学.Net Core之登录认证与跨域资源使用
  2. .NET 传奇 1.0 的出版过程,以及未来计划
  3. .NET Core 1.1 升级公告
  4. DIP原则、IoC以及DI
  5. 程序员求职面试三部曲之一:选择合适的工作单位
  6. .NET的未来包含一个开源的Mono
  7. Vue 深度监听和初始绑定
  8. 织梦网站翻页php,dedecms织梦网站列表页和内容页分页样式
  9. ArcGIS实验教程——实验十二:栅格数据投影变换
  10. ArcGIS怎样获取重分类后各类所占的像元个数