v1.5.x以上版本使用说明
请参考:编译和使用
v1.4.x以下版本使用说明
运行make r编译安装后,会在如下目录,生成对应的库文件:
- 头文件目录: ./tbox/pre/inc/$(PLAT)/$(ARCH)/
- 库文件目录: ./tbox/pre/lib/$(PLAT)/$(ARCH)/
如果配置了make f PREFIX=/xxx,则生成的文件目录为:
- 头文件目录: /xxx/inc/$(PLAT)/$(ARCH)/
- 库文件目录: /xxx/lib/$(PLAT)/$(ARCH)/
对于linux x64的库:
- 头文件目录: ./tbox/pre/inc/linux/x64/tbox
- 调试库文件: ./tbox/pre/lib/linux/x64/libtboxd.a
- 发布库文件: ./tbox/pre/lib/linux/x64/libtboxr.a
对于msvc x86的库:
- 头文件目录: ./tbox/pre/inc/msvc/x86/tbox
- 调试库文件: ./tbox/pre/lib/msvc/x86/tboxd.lib
- 发布库文件: ./tbox/pre/lib/msvc/x86/tboxr.lib
使用的时候,需要对编译选项进行一些简单的设置,来区别是否为调试模式:
- CFLAGS[调试模式]: -D__tb_debug__
- CFLAGS[发布模式]:
设置链接选项,对tbox库进行链接,注:如果用mingw编译,还需要额外链接对应的libgcc.a:
- LDFLAGS[调试模式|linux]: -L./tbox/pre/lib/linux/x64/ -ltboxd
- LDFLAGS[发布模式|linux]: -L./tbox/pre/lib/linux/x64/ -ltboxr
- LDFLAGS[调试模式|msvc]: -LIBPATH:.\tbox\pre\lib/msvc\x86 tboxd.lib
- LDFLAGS[发布模式|msvc]: -LIBPATH:.\tbox\pre\lib/msvc\x86 tboxr.lib
接下来,就可以使用tbox库了,下面看个简单的例子: ```c // 只需要包含tbox.h就行了,它会级联包含所有头文件 #include “tbox/tbox.h”
int main(int argc, char** argv)
{
/* 初始化tbox库
*
* @param priv 平台所需要的私有数据,目前针对android,需要传入JNIEnv* env,其他平台默认传tb_null
* @param data 设置内存池需要的数据地址,默认直接使用系统内存,所以传tb_null就行了
* @param size 设置内存池需要的数据大小
*/
if (!tb_init(tb_null, tb_null, 0)) return 0;
// 使用外部连续内存作为整个库的内存使用
// tb_init(tb_null, malloc(10 * 1024 * 1024), 10 * 1024 * 1024);
// 打印信息
tb_trace_i("hello tbox");
// 打印调试信息,仅仅在调试模式下显示
tb_trace_d("hello tbox");
// 打印错误信息
tb_trace_e("hello tbox");
// 初始化流
tb_stream_ref_t stream = tb_stream_init_from_url("http://www.xxxx.com/index.html");
if (stream)
{
// 保存流数据到文件
tb_transfer_done_stream_to_url(stream, "/home/file/index.html", 0, tb_null, tb_null);
// 退出流
tb_stream_exit(stream);
}
// 阻塞模式:下载http文件,后面几个参数用于设置进度回调,这里不使用
tb_transfer_done_url_to_url("http://www.xxxx.com/index.html", "/home/file/index.html", 0, tb_null, tb_null);
// 异步模式: 添加四个http下载任务,并执行,后面几个参数用于设置进度回调,这里不使用
tb_transfer_pool_done(tb_transfer_pool(), "http://www.xxxx.com/index0.html", "/home/file/index0.html", 0, 0, tb_null, tb_null);
tb_transfer_pool_done(tb_transfer_pool(), "http://www.xxxx.com/index1.html", "/home/file/index2.html", 0, 0, tb_null, tb_null);
tb_transfer_pool_done(tb_transfer_pool(), "http://www.xxxx.com/index2.html", "/home/file/index3.html", 0, 0, tb_null, tb_null);
tb_transfer_pool_done(tb_transfer_pool(), "http://www.xxxx.com/index3.html", "/home/file/index4.html", 0, 0, tb_null, tb_null);
// ...
// 退出tbox库
tb_exit();
return 0;
}
```