基础知识
文章平均质量分 85
且行且探索
路漫漫其修远兮吾将上下而求索!
展开
-
结构体和union大小的问题
请牢记以下3条原则:(在没有#pragma pack宏的情况下)1:数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存储。2:结构体作为成员:如果一个结构里有某些结构体成员,则结构体成员要从其内部最大元素转载 2016-08-05 10:19:45 · 1012 阅读 · 0 评论 -
gcc中的-Wl,rpath=<your_lib_dir>选项
gcc编译链接动态库时,很有可能编译通过,但是执行时,找不到动态链接库,那是因为-L选项指定的路径只在编译时有效,编译出来的可执行文件不知道-L选项后面的值,当然找不到。可以用ldd 看看是不有 ‘not found’在你链接的库后面,解决方法是通过-Wl,rpath=,使得execute记住链接库的位置gcc -o foo foo.c -L/usr/local转载 2018-03-27 11:02:28 · 4439 阅读 · 0 评论 -
常用linux命令
1. 动态库文件操作1)查看 memcached 命令缺失什么库ldd /usr/local/memcached/bin/memcached2)查看 libevent-2.1.so.6 是否存在locate libevent-2.1.so.63)查看 memcached 查找依赖库的路径LD_DEBUG=libs /usr/local/memcached/bin/memcached -v 4) 将...转载 2018-03-06 15:37:45 · 276 阅读 · 0 评论 -
automake编写完整的项目---动态库+可执行文件
上一篇博客automake简介中简单的介绍了automake的使用流程,但是真正的项目肯定是很复杂的,包含不同的目录,有的生成动态库,有的是可执行文件,本文就用一个简单的opencv项目来介绍一下automake在大型项目的使用方法。本文中,最外层包含两个目录,一个目录是src,里面是不同模块的源文件,最后是要生成动态库的;一个目录是sample,里面是一个应用程序,调用src中的动态库生成可执行...转载 2018-03-02 15:22:14 · 656 阅读 · 0 评论 -
automake简介
在 Unix 上写过程序的人尤其是用 C 来开发程序的人一般都遇到过 Makefile,用 make 来开发和编译程序的确很方便,可是要写出一个 Makefile 就不那么简单了。GNU Make 那份几百页的文件,让许多人害怕。当然,现在关于 make的文档比较多,不过写一个 Makefile 总是一件很烦人的事情,GNU Autoconf 及Automake 这两个软件就是帮助程序开发者轻松产...转载 2018-03-02 15:21:31 · 21322 阅读 · 0 评论 -
修改所有文件创建时间
在一个特定的环境中遇到如下情况:configure: error: newly created file is older than distributed files!make: warning: Clock skew detected. Your build may be incomplete.123是因为现在的时钟要比文件的时间早,所以有两个方法去实现。1.设置当前系统的时间超过文件...转载 2018-03-01 16:22:52 · 6596 阅读 · 0 评论 -
typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
看智能指针的时候遇到一组函数蛮有意思的,即checked_delete(T* x)和checked_array_delete(T* x),这两个函数的作用是安全删除参数所指向的变量或数组。[cpp] view plain copytemplateclass T> inline void checked_delete(T* x) {转载 2018-01-09 14:13:42 · 1547 阅读 · 0 评论 -
无法定位序数9828于动态链接库或者exe
如果是无法定位于dll,可以认定是dll导出接口问题,或者未注册,如果是exe问题,则有可能是加载的dll不存在或者加载的dll有问题,或者dll关联其他的dll缺失问题。今天遇到一个问题,如图:起初认为是关联动态库问题,怀疑是directx安装版本不够,后来发现无关。最后解决方法是:把配置属性中 -> MFC的使用 -> 从在共享dll中使用MFC修改为在静态库中原创 2016-12-28 13:47:30 · 7446 阅读 · 1 评论 -
用fstream打开含中文路径文件时失败的问题。
最近写程序的时候遇到了使用ifstream打开含中文路径文件时失败的问题,在网上翻了一下,发现这是一个普遍遇到的问题,在很多人的博文中也都给出了一些解决技巧,但大多是转载的东西,很少对这个问题引发的原因有一个清晰、全面的解释。因此,我觉得有必要对该问题引发的原因作一个详细的剖析,希望对遇到同样问题的朋友们能有所帮助。首先,用一个简单的例子来重现一下我所遇到的问题:(1)在VS200转载 2016-11-24 16:28:44 · 1271 阅读 · 0 评论 -
动态生成guid
#include #include const char* CreateGUID() { static char buf[64] = {0}; GUID guid; if (S_OK == ::CoCreateGuid(&guid)) { _snprintf(buf, sizeof(buf)原创 2016-10-17 15:34:35 · 693 阅读 · 0 评论 -
信号量、互斥锁、条件变量(类似waitforsingleobject)
信号量用在多线程多任务同步的,一个线程完成了某一个动作就通过信号量告诉别的线程,别的线程再进行某些动作(大家都在semtake的时候,就阻塞在哪里)。而互斥锁是用在多线程多任务互斥的,一个线程占用了某一个资源,那么别的线程就无法访问,直到这个线程unlock,其他的线程才开始可以利用这个资源。比如对全局变量的访问,有时要加锁,操作完了,在解锁。有的时候锁和信号量会同时使用的”也就是说,信号量不转载 2016-08-10 14:52:52 · 1184 阅读 · 0 评论 -
多线程队列的算法优化(二)
Simple, Fast, and Practical Non-Blocking and Blocking Concurrent Queue AlgorithmsPseudocode from article of the above name in PODC96 (with two typos corrected), by Maged M. Michael and Michael L.转载 2016-08-09 17:20:11 · 504 阅读 · 0 评论 -
多线程队列算法优化(双端队列)(一
多线程队列(Concurrent Queue)的使用场合非常多,高性能服务器中的消息队列,并行算法中的Work Stealing等都离不开它。对于一个队列来说有两个最主要的动作:添加(enqueue)和删除(dequeue)节点。在一个(或多个)线程在对一个队列进行enqueue操作的同时可能会有一个(或多个)线程对这个队列进行dequeue操作。因为enqueue和dequeue都是对同一个队列转载 2016-08-09 17:19:17 · 1523 阅读 · 0 评论