云游戏的键鼠捕捉用到了 Hook 这个技术,就顺便翻了一下核心编程,写下来备忘。
最近恰好需要用 C++ 实现一个供 C# .NET 调用的模块,用dllexport
导出符号的时候出现了一点问题,明明已经看到了导出符号,但是 .NET 在调用的时候,就是找不到方法。然后用 def 文件的方式导出符号就正常,突然对这两种方式的区别产生兴趣,之前一直没有研究过,就仔细了查阅一番。
产品经理反馈程序经常失去响应,从他那里创建了 dump 文件,取回来,用 windbg 分析一番。感慨颇多。
在客户端开发的过程中免不了要接触的就是像素,屏幕分辨率,这些概念是比较常见的,但很多时候真的就只是用而已,并不知道他们到底是一种什么关系,想起之前做看图的时候,经常就会遇到一些很有意思的图片文件,那个时候就研究了一下这几个概念。近来突然想起,就记录一下。
Windows 编程中无法绕开的编译开关 /MT、/MD 其实还有一个 /LD,不过后者很少见。之前对这些一直没有一个清晰的概念,所以就查阅了相关资料。算是对这块有了一个粗浅的认识。
其实最直观的资料还属 MSDN
线程对于 Windows 编程人员来说,并不陌生,但是一直以来,我对它的了解也只是基本的使用层面。对于很多细节,也并不是很了解。这作为一个 Windows 客户端开发人员,可以说是非常尴尬了。所以,抽了一点时间,仔细梳理了一下线程相关的内容。顺便记录下来。
提起堆,大部分人都不陌生,但是其实很多人也不见得就很了解。我见过的大部分人,对堆的理解其实还停留在,全局的一种内存,速度没有栈快,不会自动销毁,需要开发人员自己管理。这其实不怪 Windows,怪就怪面试人员水平参差不齐,五百年了,问堆还是,堆栈究竟有什么区别。然后在中国这个应试教育横行的地方,也必然是各种针对性的突击,问八百个人都是上边的答案。然而,对于 Windows 的堆,作为一个开发人员,这些了解显然是不够的。
经常在写代码的时候需要处理宽字符,ASCII 字符,在代码中看到 wchar、char 等等。一般都是处理一个方法的时候发现需要的是某字符串,然后这边有什么字符串,之后查一个转换方法。还有对于 Unicode 、ANSI 这些不太分得清,所以花了一点时间看了一看。做个小结。