首页

通过调用约定诊断一个常见问题

事情是这样的 有一位开发者朋友问了有关”未能解析的外部引用”的问题。我的一个目标之一是:通过向你展示底层的工作原理,这样你就可以自己解决问题。这里的外部引用问题,是可以通过我之前博文里介绍的调用约定的文章来解决的。 首先,我们来看看具体的报错信息。 Undefined symbol: ‘__stdcall(0) pl_pvcam_init (_pl_pvcam_init@0...

再来说说经理和程序员的区别

再来说说另外一个区别 如果你参加一个PPT演讲,你可以通过观察演讲者的PPT文稿来判断他是否是一名经理还是一名程序员。 如果PPT是黑白风格,文字比较多,没有任何嵌入任何多媒体内容,并且在一页里很少有超过10个项目列表,则演讲者很可能是一名程序员。 如果PPT是彩色风格,有图形,动画,并且PPT页面里充满了让人眼花缭乱的东西,那么,演讲者很有可能是一名经理。 观看经理尝试将其演示文稿翻到特定页面很...

说说经理和程序员的区别

以下为我个人的见解,它不一定对,也不一定不对,各位看官看看就好。 如果在一个会议室中,有一些经理和一些程序员,那么有下面的一个小方法来区分他们。 看他们拿什么东西到会议室的。 他们是否拿这一台笔记本电脑?这台笔记本电脑是否在开会的时候一直开着或者笔记本电脑有一些特别之处,例如它插着一块无线网卡或者它不是一台普通的笔记本电脑,而是一台平板电脑。 如果是这样的话,那么拿这它的八成是一位经理。 如果他开...

解读各种内存分配函数的差别  

今天我们来讲讲几种容易混淆的内存分配函数的区别,它们分别是:SHGetMalloc, SHAlloc, CoGetMalloc, 和CoTaskMemAlloc。 让我们先从简单的开始吧。 首先,CoTaskMemAlloc实际上等效于:CoGetMalloc(MEMCTX_TASK) + IMalloc::Alloc。 CoTaskMemFree等效于CoGetMalloc(MEMCTX_TAS...

请勿将你的动态链接库命名为Security.dll

让我们听一则历史小故事,放松一下神经吧。 有开发者发现:如果你将动态链接库(以下使用简称DLL)文件命名为security.dll,则会发生奇怪的事情。原因在于:系统DLL里已经有一个同名的文件了,这个DLL是用于系统提供安全方面的接口的组件(Security Support Provider Interface),虽然这个文件现在被命名为了”secur32.dll”,但过...

为什么树结点不能在树控件中重复使用

其实,主要的原因是:我们希望在易用性与通用性之间的取得某种平衡。 从字面意义上来说,你不能在一个树控件中的多个地方使用相同的树结点,因为如果你这样做的话,则树结点的某些属性会产生歧义,例如树结点的父结点TVGN_PARENT或者树结点是否展开TVIS_EXPANDED。(例如,如果一个树被使用到两个不同的地方,则它就会有两个不同的父结点。) 当然了,这个问题可以通过使用树结点的实际内容的不同加以区...

为什么IE浏览器总是创建Links文件夹

我也碰到过这个情况,当时还纳着闷 如果你使用过IE浏览器,则应该会遇到这样一种情况: IE浏览器会自动创建”链接”文件夹,即使你手动删除了,它隔一段时间又会自己重建。为什么? 这个是因为IE浏览器在自己尝试做一些自动修复措施。当它发现链接文件夹丢失的时候,它就心里琢磨着:”不妙,链接文件夹不见了,估计是数据被搞乱了。我最好再创建一个相同的文件夹来修复。̶...

线程安全和可重入的区别  

何谓线程安全 如果一项操作可以安全地被多个线程执行(甚至是多个线程同时执行这项操作),则我们称这项操作为线程安全的。 何谓可重入 如果当某项操作正在另一个上下文中执行的时候,在当前上下文中可以再次执行,则我们称这项操作是可重入的。相较于线程安全,可重入这一概念会更加”强”一些,因为在可重入的概念下,相同的操作甚至可以从相同的线程中再次执行。 我们看看下面的代码: 代码解析...

SHLoadInProc在什么时候会卸载一个DLL?

何谓SHLoadInProc SHLoadInProc函数能将一个模块装入到桌面外壳(Shell)的进程地址空间,然后保留它独自作任何操作。 调用者需要传入一个CLSID,指示待加载的对象类的GUID。 如果操作成功完成,也即成功地在外壳进程中国载入了DLL并创建了对象实例,则返回NOERROR,否则返回一个OLE错误代码。 需要注意的是,此函数在Windows Vista及后续版本就不再可用了,...

对话框模板简史-终章  

我承诺过,我会编制一份比较容易看的表格来总结对话框模板的各种异同,今天就给你们。 今天的内容并没有新鲜东西,但是它会给你一种通观全局的感觉,可以从中看出对话框模板的一些历史变迁。 额外话题:什么时候应该使用对话框? 当需要用户输入的时候,大多数应用程序会采用对话框来进行人机交互。我们建议:仅当一个应用程序需要接受用户输入的时候,才需要使用对话框。举个例子,用户在菜单栏里点击打开菜单时,应用程序...