多个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
>>>
我应该在代码中更正什么?在
多个cpp文件生成so_boostpython:从多个.cpp文件创建一个模块(.so)相关推荐
- 多个cpp文件生成so_C++:C++的文件搜索路径
在做大型工程的时候,除了有C++语法知识之外,还要有工程能力. 最先要具备的能力是: 理解C++文件的编译,链接过程. 明白C++头文件的搜索路径. 本文,介绍C++的文件搜索路径. 对于C++文件来 ...
- 多个cpp文件生成so_visual studio生成so 生成的so文件 - 电脑故障 - 服务器之家
visual studio生成so 生成的so文件 发布时间:2017-04-16 来源:服务器之家 1. 新建一个源码文件,里面包含了返回两个整数的和的函数 如果使用C语言,新建test.c文件,并 ...
- 多个cpp文件生成so_荐tf_sampling_so.so等文件怎么生成(多种tf版本都可的顺利解决方法)...
tf_sampling_so.so等文件怎么生成(多种tf版本都可的顺利解决方法) 这里以Geo-CNN的代码为例子,运行时我们可能会出现这样子的错误:忘记截图 1.没有.so文件. tf_sampl ...
- r生成html文件,从R中的许多html文件创建一个语料库
这应该做到这一点.在这里,我的计算机上有一个HTML文件的文件夹(来自SO的随机样本),我用它们创建了一个语料库,然后是一个文档术语矩阵,然后完成了一些简单的文本挖掘任务. # get data se ...
- 关于.cpp文件包含另一个.cpp文件出错的原因以及解决办法
今天打开自己以前写代码突然觉得在main函数中如果要用的很多自己实现的函数,如果把它们都放在main.cpp文件中太臃肿了.调试起来特别不方便.能不能把这些自己实现的函数放到另外一个文件中呢? 可是又 ...
- include.cpp(main函数的cpp文件)文件中包含另一个.cpp文件的错误及原因
当一个main函数的cpp文件包含另一个cpp文件,使用#include "data.cpp" 是不可以的,例如下面 include.cpp #include <stdio ...
- 将类的定义放在头文件中,把成员函数的实现代码放在一个cpp文件中
将类的定义放在头文件中,把成员函数的实现代码放在一个cpp文件中 写这种.h和.cpp文件分开的大程序,虽然对很多人来说很简单,对自己来说算是第一次吧,好好学C++,加油~ 题目:定义Point类,由 ...
- Android适配--最详细的限定符屏幕适配方案解析 附带values-Dimens文件生成工具
屏幕适配 前言 适配缘由 相关概念 适配方案 db适配 设计最大分辨率图片 屏幕分辨率限定符(宽高限定符) dimens文件生成原理 使用样例1 使用样例2 dimens文件生成脚本 总结 最小宽度限 ...
- python代码编译成pyd_python如何编译py文件生成pyc、pyo、pyd以及如何和C语言结合使用...
python执行py文件的流程 当我们执行一个py文件的时候,直接python xx.py即可,那么这个流程是怎么样的呢.先说明一下,python执行代码实际上是先打开文件然后执行里面的代码,所以文件 ...
最新文章
- HLS中m3u8格式规范解读
- AgileConfig - 轻量级配置中心1.2.0发布,全新的UI
- 2018数学建模A题的简单指导
- 【STM32】HAL库 STM32CubeMX教程十---DAC
- 使用多线程进行网图下载
- 变量 重复声明_JS:定义变量的var、let有何操作?(360°无死角)
- $.each 中return问题
- 前端使用puppeteer 爬虫生成《React.js 小书》PDF并合并
- [转]UBB代码解析规范
- php 三菱plc,三菱FX系列PLC编程语言概述及之间的转换关系
- 如何解决u盘不能拷贝超过4G的大文件
- 冯雪 手术机器人的应用_外科手术机器人发展及其应用
- 6.1 手机时钟系统简介
- FINN(二)CNN,BNN及其硬件实现的背景知识
- Delphi-x2d 网络游戏引擎
- 珍珠bead_珍珠果酱直播
- Web前端期末大作业--响应式网络科技公司网页设计(IT网络主题-HTML+CSS+JavaScript)实现
- 上半年结束,46万家公司倒闭,2024太难了!
- ubuntu vscode 终端字体设置(字体间隔过大)
- 全自动照片美化软件Photolemur mac特别版