
C语言
xinyu391
android
展开
-
动态库隐藏函数表
gcc/g++编译动态库时,默认所有函数都是导出的,就是在便好的so文件中,能够看到函数表:$readelf -s libxxx.soSymbol table '.dynsym' contains 1188 entries: Num: Value Size Type Bind Vis Ndx Name 0: 0000000000000000 0 NOTYPE LOCAL DEFAULT UND 1: 000000000原创 2020-08-12 10:38:23 · 718 阅读 · 0 评论 -
四边形凹凸性判断.
如何判断四边形是否凹凸.肉眼观察,有好多方法,如判断是否为凸四边形:1.两边内夹角都是<1802.不相邻的两点连线,交点在四边形内.3.但要用代码实现,就比较复杂搜到的这个文章,但实测下来不正确(https://blog.youkuaiyun.com/coding_dreaming/article/details/50709640)后来想到用面积来判断.四边形面积,...原创 2019-06-17 19:34:23 · 5013 阅读 · 1 评论 -
[C/C++]daemon进程,进程保活
在编写服务程序时,需要在进程意外终止(crash)时,自动重启。daemon进程int main(int argc, char* argv[]){ do{ pid_t pid = fork(); if(pid<0){ // error return 0; } if(pid>0{//parent进程,处于这个死循环中 i...原创 2019-04-28 19:52:58 · 903 阅读 · 0 评论 -
C/C++程序链接动态库时,指定相对路径
C/C++程序链接动态库时,指定相对路径在makefile的链接参数中增加如下设置:-Wl,-rpath,'$$ORIGIN/lib'如使用cmake,可设置该变量:SET (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-rpath,'$ORIGIN/lib/'" )参考这里:https://blo...原创 2019-03-25 20:12:45 · 2512 阅读 · 0 评论 -
合并两个静态库;静态库编译成动态库
使用ar命令合并两个静态库ar.mac内容CREATE libcombine.a ADDLIB libone.a ADDLIB libtwo.a SAVEEND执行如下命令$ ar -M < ar.mac或者使用 如下脚本$ printf \"create libcombine.a\\naddlib libone.a\\naddlib libtow.a\...原创 2019-03-18 15:33:11 · 2439 阅读 · 0 评论 -
android neon
如果为android native 程序库编写neon加速代码方法有2:1 直接 在代码中使用neon Instrinsic函数指令 2. 使用neon汇编代码asm(code : output operand list : input operand list [: clobber list]);如 int a = 1; int b = 2; ...原创 2018-11-22 09:53:14 · 506 阅读 · 0 评论 -
C语言 ({}) 复合语句表达式
C语言中{}包裹的多个语句为复合语句。加上()则变成了表达式语句,就可以进行赋值举例: int n = ( { int _n = func(); _n>0?_n:0}); 对内存stirng进行scanf,可以使用sscanf(str,format, ...),但如果有很多数据要从字符串中读取,需要对str 指针进行偏移。sscannf中format最后加...原创 2018-09-19 16:52:57 · 4818 阅读 · 0 评论 -
大量小数据拷贝,直接内存赋值或数组赋值,要快于memcpy
在测试图像旋转过程中,发先每个channel进行memcpy速度要明显慢与直接内存byte赋值*dst++=*src++,或dst[0]=src[0].memcpy 要8.8ms,直接内存赋值只有1.8ms原创 2018-08-02 09:54:24 · 1858 阅读 · 0 评论 -
记录古怪的问题
集成 libjpeg-turbo库,遇到了古怪的crash问题,jpeg-turbo 增加了内存编解码功能,在编码到内存时,使用函数 jpeg_mem_src(&cinfo, fileNameOrBuffer, bufSize);代码如下:```uchar* pixels = ...int bufSize = 0;unsigned char* jpegBuf = ...原创 2018-07-31 16:55:34 · 383 阅读 · 0 评论 -
gcc编译可执行文件 链接静态库
使用别人提供的静态库编译可执行文件,出错:/usr/bin/x86_64-linux-gnu-ld: libxxx.a(event.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIC经分析,原因可能是, 静态库式低版本gc...原创 2018-05-04 10:32:16 · 4180 阅读 · 0 评论 -
"recompile with -fPIC" 错误,及c代码引用C++库
问题1. C代码项目,需要链接另外一个C++静态库,但链接时出现了错误relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC但在同事的电脑上就能编译通过,发现gcc版本不一样,我的高7.2,他们的才4.x度娘,搜到的都是说把 那原创 2018-01-09 15:56:39 · 7052 阅读 · 3 评论 -
C语言实现 byte 转float IEEE754
C语言根据 IEEE754 实现 byte 转float原创 2017-08-05 10:52:14 · 9206 阅读 · 1 评论 -
用CMake 编译Android库
Android默认使用Android-NDk来编译native库,需要编写Androd.mk文件,和Application.mk文件。但现在很多项目使用CMake来编译(CMakeLists.txt),AndroidStuidio已经提供了cmake的支持(没用过)。直接使用CMake命令行也是可以编译android native库的。参考官方文档给的说明 https://原创 2017-06-23 11:19:46 · 8006 阅读 · 0 评论 -
stlport使用error: undefined reference to 'std::__throw_bad_alloc()'问题
Android NDK开发时,使用stl遇到的问题,ndk中有2个stl实现(静态的)gnustl_static和stlport_static项目使用stl库函数,在Application.mk文件中APP_STL:=gnustl_static编译运行无问题,但客户说使用了gnu库有gpl license 风险(实际是没有的)解决方法,1跟客户解释2原创 2017-05-18 09:59:51 · 4305 阅读 · 0 评论 -
用高级语言实现select语句的功能
用高级语言实现select语句的功能数据结构的课程设计:用高级语言实现select语句的功能 SELECT [ALL|DISTINCT] [,…] FROM [,…] [WHERE ] [GROUP BY [HAVING]] [ORDER BY [ASC|DEC] 要求: (1) 能够以命令方式执行; (2) 能够以程序方式执行;我选用比较熟练的c愿意完成了单原创 2006-12-12 19:17:00 · 1617 阅读 · 3 评论 -
求平方根
在杂志上看到的.求平方根的方法,真牛.就这么简短竟能精确到小数点后3位.#include float SquareRootFloat(float number){ long i; float x,y; float f = 1.5F; x = number*0.5F; y = number; i = *(l原创 2006-09-05 14:07:00 · 954 阅读 · 0 评论