导航:首页 > 器材知识 > 移动设备如何使用boost库

移动设备如何使用boost库

发布时间:2021-12-01 17:35:35

Ⅰ 如何移植boost库到Android

这里是使用NDK进行编译boost的但肯定对我有用吧。。经过一番折腾终于编译成功,,高兴,呵呵! 转载

下面将主要的过程记录下来:

1、下载boost 源码:

Boost for Android

Boost for android is a set of tools to compile the main part of the Boost C++ Libraries for the Android platform.

Currently supported boost versions are 1.45.0, 1.48.0 and 1.49.0.

因此下载最新的 1.49 版本,下载完成后进行打补丁

2、下载补丁代码

boost-1_49_0

3、打补丁代码

boost_1_49_0.tar.bz2 放在android的 external 下解压:

tar -xjvf external/boost_1_49_0.tar.bz2

将boost-1_49_0.patch放在external\boost_1_49_0下面根目录执行:

patch -Np1 -d external/boost_1_49_0 < external/boost_1_49_0/boost-1_49_0.patch

4、编写boost的makefile文件,即Android.mk

LOCAL_PATH:= $(call my-dir)

common_SRC_FILES := \
libs/thread/src/pthread/thread.cpp \
libs/thread/src/pthread/once.cpp \

common_SRC_FILES += \
libs/filesystem/v3/src/codecvt_error_category.cpp \
libs/filesystem/v3/src/operations.cpp \
libs/filesystem/v3/src/path.cpp \
libs/filesystem/v3/src/path_traits.cpp \
libs/filesystem/v3/src/portability.cpp \
libs/filesystem/v3/src/utf8_codecvt_facet.cpp \
libs/system/src/error_code.cpp \
libs/system/src/local_free_on_destruction \

include $(CLEAR_VARS)
LOCAL_MODULE:= libboost
LOCAL_SRC_FILES := $(common_SRC_FILES)

prebuilt_stdcxx_PATH := prebuilts/ndk/current/sources/cxx-stl/gnu-libstdc++

LOCAL_C_INCLUDES := \
$(LOCAL_PATH)/boost \
$(prebuilt_stdcxx_PATH)/include \
$(prebuilt_stdcxx_PATH)/libs/$(TARGET_CPU_ABI)/include/ \

LOCAL_C_INCLUDES += \
$(prebuilt_stdcxx_PATH)/include \
$(prebuilt_stdcxx_PATH)/libs/$(TARGET_CPU_ABI)/include/ \
$(prebuilt_supccxx_PATH)/include

LOCAL_CFLAGS += -fvisibility=hidden -lpthread
LOCAL_CPPFLAGS += -fexceptions -frtti

LOCAL_SHARED_LIBRARIES := libc libstdc++ libstlport

LOCAL_LDFLAGS += -L$(prebuilt_stdcxx_PATH)/libs/$(TARGET_CPU_ABI) -lgnustl_static -lsupc++

LOCAL_MODULE_TAGS := optional
include $(BUILD_SHARED_LIBRARY)
比较重要的是上面 红色 部分文字

最后编译生成:

target thumb C++: libboost <= external/boost_1_49_0/libs/thread/src/pthread/thread.cpp
target thumb C++: libboost <= external/boost_1_49_0/libs/thread/src/pthread/once.cpp
target thumb C++: libboost <= external/boost_1_49_0/libs/filesystem/v3/src/codecvt_error_category.cpp
target thumb C++: libboost <= external/boost_1_49_0/libs/filesystem/v3/src/operations.cpp
target thumb C++: libboost <= external/boost_1_49_0/libs/filesystem/v3/src/path.cpp
target thumb C++: libboost <= external/boost_1_49_0/libs/filesystem/v3/src/path_traits.cpp
target thumb C++: libboost <= external/boost_1_49_0/libs/filesystem/v3/src/portability.cpp
target thumb C++: libboost <= external/boost_1_49_0/libs/filesystem/v3/src/utf8_codecvt_facet.cpp
target thumb C++: libboost <= external/boost_1_49_0/libs/system/src/error_code.cpp
target SharedLib: libboost (out/target/proct/godbox/obj/SHARED_LIBRARIES/libboost_intermediates/LINKED/libboost.so)
target Symbolic: libboost (out/target/proct/godbox/symbols/system/lib/libboost.so)
target Strip: libboost (out/target/proct/godbox/obj/lib/libboost.so)
Install: out/target/proct/godbox/system/lib/libboost.so

成功生成 libboost.so 库

Ⅱ 如何编译&使用boost库

1. 编译

1.2. VS2005编译boost_1_55_0

1.2.1. 使用vs2005的命令行执行:...\boost_1_55_0\bootstrap.bat

1.2.2. 编译动态库

bjam install stage --toolset=msvc-8.0 --stagedir="C:\Boost\boost_vc_80" link=shared runtime-link=shared threading=multi debug release

1.2.3. 编译静态库

bjam install stage --toolset=msvc-8.0 --stagedir="D:\Boost\boost_vc_80" link=static runtime-link=static threading=multi debug release

各种参数详解:

stage:表示只生成库(dll和lib)

install:还会生出包含的头文件

--toolset=msvc-8.0:指定编译器版本,8.0为vs2005,其他VS类推。

--stagedir:指定编译后存放的目录

link:生成动态库/静态库。动态库(shared),静态库(static)

runtime-link:动态/静态C/C++运行时库,同样有shared和static两种组合方式。这样共有4种组合方式,个人根据自己需要选择。

threading:单/多线程,一般都是多线程程序,当然multi了。

debug/release:编译版本,一般2个都需要。

2. 使用

使用静态库:

[cpp] view plain print?
//#define BOOST_ALL_DYN_LINK
#include <boost/bind.hpp>
#include <boost/asio.hpp>
#include <boost/thread/thread.hpp>
#include <boost/thread/mutex.hpp>
#include <boost/thread/condition.hpp>

使用静态库连接时,仅需要包含的lib为:

debug版:libboost_system-vc80-mt-gd-1_55.lib等一系列包含gd的库。

release版本:libboost_system-vc80-mt-1_55.lib等一系列不包含gd的库。

使用动态库链接:

[cpp] view plain print?
#define BOOST_ALL_DYN_LINK
#include <boost/bind.hpp>
#include <boost/asio.hpp>
#include <boost/thread/thread.hpp>
#include <boost/thread/mutex.hpp>
#include <boost/thread/condition.hpp>
使用动态库链接时,仅需要包含的lib为:

debug版:boost_system-vc80-mt-gd-1_55.lib,同时在生成的exe加入boost_system-vc80-mt-gd-1_55.dll

release版:boost_system-vc80-mt-1_55.lib,同时在生产的exe路径下加入boost_system-vc80-mt-1_55.dll

Ⅲ 如何在项目中使用boost静态库

当你编译完boost库后,静态库是放在库的stage/lib目录下。
要使用的话,就在bashrc里面加上BOOST_ROOT=xxx/boost_1_51_0,Boost_LIBRARYDIR=${BOOST_ROOT}/stage/lib。
编译程序的时候要指定boost的头文件和库的路径,如;
g++ demo.cpp -I$BOOST_ROOT -L$Boost_LIBRARYDIR -lboostxxx -o demo

Ⅳ 如何配置boost库

要做网页内容提取工作,自然少不了长字符串匹配、搜索的问题,最先想到的是使用正则表达式,简单、高效。处于正则表达式perl其实是当之无愧的老大,但是为了开发上的统一,暂时全部使用标准c++实现,因而还需要附加库来实现.thank solsikja for sharing and favor..
google一下,发现支持正则的库还真不少,大概有以下几种:boost,GNU,VC7带的ATL中的和微软发布的greta。

网上的朋友对boost评价不错,决定就使用是它了!

1、接下来的就是下载boost库,网上很好找。我下载的是压缩包,20多M,解压后将近100多M。

解压目录是D:\boost

2、然后是编译,我只要支持正则表达式就可以,因此只需要编译D:\boost\libs\regex\build目录下的文件。据说全部编译要花将近2个小时,没有验证过,编译正则表达式部分在实验室机器上(2.20G,512M)只用了不到5分钟。不过可怜俺的本都给跑死了,太热了,自动关机啦.郁闷.如此之菜还敢用本写程序的,普天之下也就是俺这一个大傻帽啦....

网上介绍的如何编译最多的一篇文章是“VC利用boost库解析正则表达式”,如果有人能根据这篇文章编译成功不妨告诉喃一声……

以下是我的操作:

在“运行”里输入“cmd”,打开命令提示符;

输入命令“cd D:\boost\libs\regex\build”//设置当前目录
接下来是很关键的一步:
很多文章是这样说的“输入 nmake -fvc6.mak”
但是出现了“'nmake' 不是内部或外部命令,也不是可运行的程序或批处理文件。”的错误提示。
然后你就会拼命查找原因,结果又有文章上说是环境变量没配置好,然后给出一堆“set”。
也有的文章说是运行一下visual studio安装目录下的VC98\Bin\VCVARS32.BAT文件就OK了。
你按照文章作者的方法做的,结果发现问题依旧!
以上说法都是正确的,但是说得都不是很完整,出现错误提示的根本原因就是环境变量没配置好,不识别nmake命令,配置过jdk的朋友就很容易明白。如果按照作者的要求搞一堆“set”,未免大题小作了吧,因为我们只需要用一次'nmake' 就可以解决问题了。
VCVARS32.BAT正式配置环境变量的批处理文件,但是配置的参数只在当前窗口有效,也就是说当你双击运行后窗口关闭,环境变量已经没有了。

于是我用了以下方法:
把VCVARS32.BAT文件用鼠标拖到打开的cmd窗口("D:\Program Files\Microsoft Visual Studio\VC98\Bin\VCV
ARS32.BAT"),然后回车。

输入命令“nmake -fvc6.mak”

等待几分钟,OK了!,D:\boost\libs\regex\build多了一个vc6的文件夹,里面是很多lib和dll文件。

3、到此资源已经准备好了,下面要做的工作是配置VC6.0,使它编译使时候能找到正则库。

把vc6下的所有lib和dll文件拷贝到Visual Studio安装目录下的VC98\boostRex(boostRex是我自己建的)

然后打开vc6.0,选择“Tools->Options->Directories->Include files”,加入一行“D:\BOOST”

选择“Tools->Options->Directories->Library file”,加入一行“C:\PROGRAM FILES\MICROSOFT VISUAL STUDIO\VC98\BOOSTREX”(彩色部分是我的Visual Studio安装目录)

配置也OK了!

4、编写程序测试

SDK下的测试:

#include "stdafx.h"
#include
#include
#include
#include
#include

using namespace std;
using namespace boost;

regex expression_r("^select ([a-zA-Z]*) from ([a-zA-Z]*)");

int main(int argc, char* argv[])
{
std::string in;
cmatch what;
cout << "enter test string" << endl;
getline(cin,in);
if(regex_match(in.c_str(), what, expression))
{
for(int i=0;i
cout<<"str :"<.str()<
}
else
{
cout<<"Error Input"<
}
return 0;
}

输入: select name from table
输出: str:select name from table
str:name
str:table
注意:如果出现 LINK : fatal error LNK1104: 无法打开文件“libboost_regex-vc6-sgd-1_34_1.lib”如果出现这种情况就把这个文件名改一下,因为boost编译之后得到的是libboost_regex-vc6-sgd-1_34,实际我们下载的是boost1.34.1,所以文件名就要对应起来最后改为libboost_regex-vc6-sgd-1_34_1,这样就正确了。开始也没想到应该这样改,只是跟小子随便试了一下,竟然成功了。gxgx!!!!

Ⅳ ubuntu 使用boost库,怎么链接

经过重重困难,终于配置好了各种环境,. 网上说的配置boost的方法略不靠谱, 东凑西凑, 加上官网说明文档,才摸索出来.

分享一下心得给跟我一样的菜鸟们, 不要路太弯.

(1) 首先, 官网下载boost压缩包: 假设为 boost_1_61_0.tar.bz2

(2) 解压到出来, 进入压缩包所在的目录:

[html] view plain
tar -zxvf boost_1_61_0.tar.bz2

(3) 进入boost_1_61_0目录, 里面有一个 bootstrap.sh, 执行命令
[html] view plain
sudo ./bootstrap.sh
你也可以添加prefix参数, 自定义生成的头文件和二进制库文件目录,如:
[html] view plain
sudo ./booststrap.sh --prefix /usr/local/lib/boost
则生成的头文件在/usr/local/lib/boost/include中, 二进制库文件在/usr/local/lib/boost/lib中

但是不建议自己定义目录, 不然后面用的时候还得指定库目录, 麻烦

sudo ./boostrap.sh 默认头文件在/usr/local/include中; 二进制库文件在/usr/local/lib中.

执行命令:

[html] view plain
sudo ./b2 install

等吧, 等它执行完毕, 去看看上面说的目录里面是不是有boost的东西. 如查看/usr/local/include/boost中有没有boost相关头文件
(4) 在eclipse c++中使用它

如果没安装eclipse,可以参看

新建项目- C++项目 , 选择 Linux GCC的空项目

点击finish

默认情况下, 项目已经自动包含了/usr/local/include库路径

新建src文件夹,然后在里面新建main.cpp
这时,咱们调用boost::bind等部分函数已经是可以用的.编译和运行都没有问题. 我以为大功告成了, 其实并没有

Ⅵ 怎样使用Boost库

boost自带生成工具bjam,先编译bjam,然后用bjam "-sTOOLS=gcc " install 命令

Ⅶ 如何使用已经编译好的boost库

vc的话有编译好的,mingw的话也有,不过不是最新版的,自己编译找教程吧,大概是先编译一个bjam的文件出来,然后用它编译boost,挺快的,其实没有某些教程说的几个小时,我的i5-460M大概是编译了大半个小时,boost1.56

Ⅷ boost的静态库怎么使用

当编译完boost库后,静态库是放在库的stage/lib目录下。
要使用的话,就在bashrc里面加上BOOST_ROOT=xxx/boost_1_51_0,Boost_LIBRARYDIR=${BOOST_ROOT}/stage/lib。
编译程序的时候要指定boost的头文件和库的路径,如;
g++ demo.cpp -I$BOOST_ROOT -L$Boost_LIBRARYDIR -lboostxxx -o demo

Ⅸ 如何调用boost库

首先把Boost库的头文件存放到/usr/include/boost/路径下,再把Lib文件存放到/usr/local/lib/boost/路径下。修改/etc/profile文件,在此文件中增加如下2个环境变量:

BOOST_INCLUDE=/usr/include/boost
export BOOST_INCLUDE

BOOST_LIB=/usr/local/lib/boost
export BOOST_LIB

写一个如下所示的cpp文件。
//samlpe.cpp
#include <iostream>
#include <string>
#include <boost/thread.hpp>

using namespace std;

void threadRoutine(void)
{
boost::xtime time;
time.nsec = 0;
time.sec = 20;
cout << "线程函数做一些事情" << endl;
boost::thread::sleep(time);
}

int main(void)
{
string str;
cout << "输入任意字符开始创建一个线程..." << endl;
cin >> str;
boost::thread t(&threadRoutine);
t.join();
cout << "输入任意字符结束运行..." << endl;
cin >> str;
return 0;
}

保存。使用g++编译,命令如下所示:

g++ -o samlpe.out samlpe.cpp -I$BOOST_INCLUDE -L$BOOST_LIB -lboost_thread-gcc-mt

其中-I参数指定Boost头文件路径,-L参数指定Boost库文件路径,-l参数指定使用线程库名。在我使用的这个版本Boost里,到/usr/local/lib/boost路径下,可以看到有关Boost线程库文件,比如:libboost_thread-gcc-mt.a等。注意在用-l参数指定库名时把磁盘文件名前面那个lib前缀去掉就可以了。

Ⅹ 如何学习boost库

BOOST是对STL的扩充,它加入了的智能指针,图操作等等很多的模块。

2.这两个库都是在C++标准委员会的指导下制定的。STL包含了常用的算法和集合类型,并采用了泛型的思想来实现。boost是对STL的扩充,是一个功能更加强大,更实用的库。所以作为初学者,还是先掌握STL好,需要写应用性程序时,再研究boost库。

阅读全文

与移动设备如何使用boost库相关的资料

热点内容
燃气阀门井填砂高度 浏览:762
内倒窗户五金件什么材质的好 浏览:123
dnf机械做什么远古套装 浏览:775
A委托某班轮公司运输一批机械装置 浏览:986
r717制冷剂用什么代替 浏览:184
设备pe英语怎么说 浏览:794
pe工具箱修复硬盘 浏览:569
笔记本1机械什么意思 浏览:395
什么叫简单机械五年级 浏览:719
检修带电设备时首先做什么 浏览:234
思域尾鼓换阀门尾鼓需要什么 浏览:45
常见安全设备及器材有哪些 浏览:299
弹弓机械大师怎么校准 浏览:507
奥迪a4l排气阀门声浪 浏览:895
金寨五金批发市场 浏览:152
如何解除工具箱分号 浏览:512
日产尼桑机械锁怎么启动车 浏览:377
中控设备故障罚款多少 浏览:895
摩托仪表灯不亮怎么修 浏览:456
潜污泵耦合装置作用 浏览:961