Boost python 程式設計記錄

2021-07-15 16:41:00 字數 2574 閱讀 3491

一、使用boost python

使用的是windows,anaconda python2.7

- include的路徑包含 \anaconda\anaconda\include,\boost\include

- lib的路徑包含 \anaconda\anaconda\libs, \boost\libs

- lib有 boost_python-vc120-mt-1_58.lib;python27.lib;

使用的是ubuntu,anaconda python2.7

- include的路徑包含 -i*\anaconda\anaconda\include\python2.7,-i*\boost\include

- lib的路徑包含 -l*\anaconda\anaconda\libs, -l*\boost\libs

- lib有 -lboost_python, -lpython2.7

#include 

#include

#include

using

namespace

std;

int main()

執行結果:

二、使用python 呼叫c++類

source code

#include 

#include

using

namespace

std;

using

namespace boost::python;

class student

string getname()

void setage(int age)

int getage()

private:

string name_;

int age_;

};boost_python_module(example)

makefile

cc=g++

include=-i/home/yang/.pyenv/versions/anaconda2/include/python2.7

libs=-lboost_python

cflags=-fpic

example.so:student2py.o

$(cc) $(

cflags) -shared $< -o $@

$(include) $(

libs)

student2py.o:student2py.cpp

$(cc) $(

cflags) -c $< -o $@

$(include)

clean:

rm -rf student2py.o

rm -rf example.so

python 端的**

import example

stu = example.student()

stu.setname("me")

stu.setage(23)

print stu.name

print stu.age

二、使用c++呼叫python類python端類定義** py2cplus.py

class

student:

def__init__

(self,name,age):

self.age = age

self.name = name

defsetname

(self,name):

self.name = name

defsetage

(self, age):

self.age = age

defgetname

(self):

return self.name

defgetage

(self):

return self.age

c++端**

#include 

#include

#include

using

namespace

std;

using

namespace boost::python;

int main()

makefile

cc=g++

include=-i/home/yang/.pyenv/versions/anaconda2/include/python2.7

libs=-lboost_python -lpython2.7

cflags=-fpic

test2:py2cplus.cpp

$(cc) -o $@

$<

$(include) $(

libs)

boost Python 安裝和使用

專案中需要將c 的程式暴露給網路使用,我也不想使用c 來用網路程式設計,就想到可以使用python來解決web端,然後將 c 的介面暴露給 python 於是在尋求解決方案的時候找到了 boost.python 庫。boost 中的 python 庫支援在 python 和 c 之間的自由轉換,包括...

Boost Python學習筆記(二)

首先定義乙個動物類 include animal.h pragma once include class animal 其實現 如下 src animal.cpp include include animal.h animal animal std string name name name ani...

Boost Python學習筆記(三)

繼續使用前面的專案,但是先修改下python指令碼 zoo.py 新增add和str函式,分別針對整數 浮點數和字串引數的測試 def add x,y print x y def str s print output s if name main pass然後修改下main.cpp原始檔 using...