Skip to content

使用入门

ruki edited this page Dec 5, 2015 · 5 revisions

###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;
}
```
Clone this wiki locally