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”

  1. int main(int argc, char** argv)
  2. {
  3. /* 初始化tbox库
  4. *
  5. * @param priv 平台所需要的私有数据,目前针对android,需要传入JNIEnv* env,其他平台默认传tb_null
  6. * @param data 设置内存池需要的数据地址,默认直接使用系统内存,所以传tb_null就行了
  7. * @param size 设置内存池需要的数据大小
  8. */
  9. if (!tb_init(tb_null, tb_null, 0)) return 0;
  10. // 使用外部连续内存作为整个库的内存使用
  11. // tb_init(tb_null, malloc(10 * 1024 * 1024), 10 * 1024 * 1024);
  12. // 打印信息
  13. tb_trace_i("hello tbox");
  14. // 打印调试信息,仅仅在调试模式下显示
  15. tb_trace_d("hello tbox");
  16. // 打印错误信息
  17. tb_trace_e("hello tbox");
  18. // 初始化流
  19. tb_stream_ref_t stream = tb_stream_init_from_url("http://www.xxxx.com/index.html");
  20. if (stream)
  21. {
  22. // 保存流数据到文件
  23. tb_transfer_done_stream_to_url(stream, "/home/file/index.html", 0, tb_null, tb_null);
  24. // 退出流
  25. tb_stream_exit(stream);
  26. }
  27. // 阻塞模式:下载http文件,后面几个参数用于设置进度回调,这里不使用
  28. tb_transfer_done_url_to_url("http://www.xxxx.com/index.html", "/home/file/index.html", 0, tb_null, tb_null);
  29. // 异步模式: 添加四个http下载任务,并执行,后面几个参数用于设置进度回调,这里不使用
  30. tb_transfer_pool_done(tb_transfer_pool(), "http://www.xxxx.com/index0.html", "/home/file/index0.html", 0, 0, tb_null, tb_null);
  31. tb_transfer_pool_done(tb_transfer_pool(), "http://www.xxxx.com/index1.html", "/home/file/index2.html", 0, 0, tb_null, tb_null);
  32. tb_transfer_pool_done(tb_transfer_pool(), "http://www.xxxx.com/index2.html", "/home/file/index3.html", 0, 0, tb_null, tb_null);
  33. tb_transfer_pool_done(tb_transfer_pool(), "http://www.xxxx.com/index3.html", "/home/file/index4.html", 0, 0, tb_null, tb_null);
  34. // ...
  35. // 退出tbox库
  36. tb_exit();
  37. return 0;
  38. }
  39. ```