C/C++
文章平均质量分 60
Andy____Li
烹饪工具箱
展开
-
将代码及依赖的静态库编译为新静态库
将代码及依赖的静态库编译为新静态库最近需要在一个开源库上实现一个新功能并封成新的lib。方法:将代码编译为.o使用ar -x 将依赖的静态库拆成.o使用ar -rcs 将.o编译生成新的.a一些参数设置AR:=(ICATCROSSCOMPILE)arCPP:=(ICAT_CROSS_COMPILE)ar CPP:=(ICAT_CROSS_COMPILE)g++ CFLAGS+=-O2原创 2017-10-11 19:21:14 · 4897 阅读 · 0 评论 -
C语言 MAP
最近需要在AWSIOT shadow添加设备状态,很明显JSON这种数据状态很明显每个状态都是Key-Value这种数据类型,很自然的想到使用MAP去实现这种状态。而代码又是跑在嵌入式设备中很明显是C语言,这里就带来一个问题,C语言原生是没有MAP实现的。作为生产环境使用,自己手搓轮子难免有考虑不周情况出现,这里就去github 摸代码,找个相对start高点,先测试一波。github 地址:h...原创 2019-08-23 13:55:17 · 7206 阅读 · 1 评论 -
C(Unix)匿名信号量
最近编写AWS IOT 部分代码,发送设备消息时会引入多线程就会引入资源竞争,比如多个线程同时想发送消息进而导致资源占用,即会导致一个线程获得资源,另一个线程则会进入等待状态。而如何等待则就是一个比较细节的内容。而在维基百科上有对忙碌等待描述:以进程反复检查一个条件是否为真为根本的技术。忙碌等待大部分情况很明显是应该避免的,所以两个线程竞争,一个线程获取到锁,另一个线程获取失败采用忙碌等待的方式...原创 2019-08-23 13:40:16 · 349 阅读 · 0 评论 -
C++获取时间戳(Linux)
Webrtc 信令服务器通信,需要实现samplewebrtc信令服务器中sid参数,而sid 参数是一个毫秒时间戳。web端是js很好拿到,而另一端是用C++实现的耶,C++获取毫秒时间戳(距离19700101000的毫秒数),没有做过,这里记录一波。环境:Linux C++11秒时间戳 使用了time.h毫秒时间戳使用了 c++11 标准库: std::chrono#include ...原创 2019-07-08 14:19:09 · 19213 阅读 · 0 评论 -
makefile/gcc 向代码传递宏
今天捡起去年年初写的AWS IOT C code进行一波维护。代码通过AWS IOT 和服务器进行交互,具有基本控制功能,这是在X86平台上。但在嵌入式平台上还多了部分跑rtmp码流部分的代码。为了方便的在不同平台上调试代码不用去手动修改其中的内容今天在MakeFile中添加了平台这个变量并传入C代码中。而这种根据平台不同,需要调用不同编译器,依赖不同的lib,执行代码中不同部分的情况非常常见,...原创 2019-04-18 19:56:29 · 2017 阅读 · 0 评论 -
C语言base64编解码图片
嵌入式设备即不支持node也不支持C++,所以这里还得有份C版本编解码codesample 代码行为:读取图片编码图片打印编码后base64编码字符串解码字符串写入文件验证测试可修改图片路径既可。编解码code来自:https://blog.csdn.net/jingda3100/article/details/78296740本文仅为方便以后使用,收集记录。#inclu...原创 2018-09-21 17:26:11 · 3870 阅读 · 5 评论 -
curl post表单上传文件(C++)
最近测试如何上传文件到服务器。原来传照片一致通过binary 形式传文件,或者把图片base64编码传图片。一致没有用form-data 表单形式发送数据,今天尝试下如何使用libcurl提供的API上传文件。Sample code:#include <iostream>#include <curl/curl.h>#include &原创 2018-09-19 19:28:58 · 12276 阅读 · 1 评论 -
C语言获取并格式化时间
前几天使用AWS V4签名时,需要一种特殊时间格式(NNNNMMDDTHHMMSSZ),在node还是比较好拼装,但C里面还没有拼这种比较奇怪的格式。这里记录下一下过程。环境:Linux Ubuntu1 函数主要涉及到time.h头文件中以下三个函数 :1.1 timetime_t time(time_t *t);time() 是指返回自 Unix 纪元(Janua...原创 2018-08-06 19:46:56 · 5708 阅读 · 0 评论 -
CJSON使用(C JSON解析工具)
最近iot code要跑在linux上,因为后面还要把它移植到公司自己的操作系统上(只支持C)就带来了一些麻烦,和nodeserver通信协议都是用JSON格式,所以这就涉及到了C语言对JSON的处理。CJSON 仅有头文件和C文件,不用编译依赖库,可以比较方便嵌入进去。CJSON比较好用,可以直接读sample就可以用了。CJSON:项目地址 https://github.com/Dave...原创 2018-07-25 19:27:41 · 3586 阅读 · 0 评论 -
C++ 遍历文件夹
code:#include <vector>#include <string>#include <iostream>#include <dirent.h>using namespace std;int getFileList(string dirent, vector<string> &FileList){ DIR *p_dir; struct dirent *p_dirent原创 2018-03-05 11:07:08 · 1766 阅读 · 0 评论 -
Linux C++ glog使用
1 下载安装glog1 Git clone https://github.com/google/glog.git2 cd glog3 ./autogen.sh4 ./configure --prefix=path(install)5 make6 make install从安装目录得到lib 和include2 使用sample code:#include <string>#inclu原创 2018-02-28 20:39:11 · 10539 阅读 · 3 评论 -
Libcurl 安装及使用(C++)
libcurl是一个跨平台的网络协议库,支持http,https,ftp,gopher,telnet,dict,file和ldap协议.libcurl同样支持HTTPS证书授权,HTTP POST,HTTP PUT,FTP上传,HTTP基本表单上传,代理,饼干,和用户认证。本文主要记录的是使用libcurl编写嵌入式平台调用开发平台提供restful API所需的posts get这两个接口。...原创 2018-03-08 20:15:57 · 8190 阅读 · 0 评论 -
C++ 实现图片base64编解码
最近使用人脸识别restfulAPI遇到了要求图片base64编码后传输问题。 借此机会了解下什么是base64编码。部分内容参考自阮一峰blog: http://www.ruanyifeng.com/blog/2008/06/base64.html1 什么是base64编码所谓Base64,就是说选出64个字符—-小写字母a-z、大写字母A-Z、数字0-9、符号”+”、”/”(再加上作为垫字的原创 2018-03-14 19:27:22 · 15577 阅读 · 5 评论 -
Linux C/C++获取程序运行时间
获取当前时间戳数据,程序中不同位置时间数据做差即可得到程序运行时间。1 实现基础: int gettimeofday(struct timeval *tv, struct timezone *tz);2 通过在Linux 命令窗: Man gettimeofday; gettimeofday()会把目前的时间用tv 结构体返回,当地时区的信息则放到tz所指的结构中。3 参数: struct原创 2018-01-17 19:50:50 · 9206 阅读 · 0 评论 -
socketio-cpp-lib使用
SocketIo cpp lib 使用代码网站及sample:https://socket.io/blog/socket-io-cpp/ 本文旨在讲解socketio cpp 基础的收发。1 编译socketio 得到lib和头文件。可参考我的另一篇文章:http://blog.csdn.net/m0_37263637/article/details/78207641 Socketio c原创 2017-10-23 18:10:52 · 8371 阅读 · 16 评论 -
C语言 回调函数原理及实现
最近需要实现处理AWSIOT传来的消息回调函数。作为库编程,在老司机的指导下发现不能直接把AWS IOT的回调接口暴露到上层而是应该自己封装回调函数以供上层调用,这样可以更好地解耦合,上层即不需要了解下层的细节。这里就发现了原来对回调函数的使用还存在一定的误区,这里特地整理一篇文章以供查阅。实质上就是传入一个函数指针 内部去调用。 可以参考Linux内核callback调用方式。第一节主要展示什...原创 2019-08-30 18:32:38 · 3550 阅读 · 1 评论