Archive for the ‘Language’ Category

VC,dll的几个问题及解决

星期五, 2月 5th, 2010

第一个问题,如果工程A依赖于工程B,而工程B是一个dll工程,如果工程B并没有导出任何接口的话,那么工程A不能被编译。因为虽然工程B的dll文件成功生成了,然而由于没有任何导出符号,那么lib文件不会被生成。所以工程A认为工程B没有成功编译,工程A对工程B的依赖是通过检查lib的生成的。

之所以碰到第一个问题,因为工程B没有导出符号。

工程B是这样的,我把所有的导出符号都定义在一个lib里面,而dll工程希望链接这个lib而得到导出符号。问题是dll主工程没有调用到lib里面的任何符号,所以链接器认为根本没必要连接这个lib,所以最终得到的dll没有任何导出符号。

由于不希望在dll主工程里面加入任何别的代码(比如写一个无用的函数仅仅调用一下lib里面某个函数),主要是希望dll的源文件可以顺利在别的环境下编译,我又不希望有乱七八糟的宏影响阅读。

试了颇长的时间,Project->Setting->Link->Input下面有一个框是:Force symbol references:

里面可以填上lib里面的随意一个符号就行了。不过要注意的是,可能要在前面增加一个下划线。

比如 AAA => _AAA

Linux C编程一站式学习

星期四, 1月 14th, 2010

在人人网上看到savage推荐的这个链接:

http://learn.akae.cn/media/index.html

趁着项目有点余暇,就翻了一遍,还是比较适合初学者快速进入C语言编程的。

当然,很多地方限于其培训的时间,也语焉不详。

我不知道为何Linux C编程的人对IDE如此的厌恶,对于我来说,IDE是非常好用的东西,比如Visual Studio或者Eclipse。也许是我从十年前就开始接触的是windows吧。

说回这个一站式学习,我觉得虽然写的代码再多再好,还是需要有个像培训讲义一样的东西,可以把开发经验顺利带给新人或入门者。

嗯,需要花些时间看怎么设计培训教材。

万圣节与圣诞节

星期一, 12月 7th, 2009

为什么程序员分不清万圣节和圣诞节?

因为 DEC 25 = OCT 31

如果你看不懂,那你不是一个正宗的程序员!

原文是这样的:

Why do programmers always get Christmas and Halloween mixed up?

Because DEC 25 = OCT 31

(If you don’t get this, you’re not a hardcore programmer!)

Dalvik虚拟机

星期三, 12月 2nd, 2009

昨天开始看Android相关的技术文章,Android里面使用了一个名为dalvik的虚拟机来支持java。

Dalvik是一个register-based 的虚拟机,register-based是相对stack-based而言的,register-based的操作数是放在寄存器里面的,因此每条指令都需要指明操作的是哪个寄存器,而stack-based的操作数是放在栈上,指令从栈顶pop出操作数操作,然后把结果push回栈即可。

因此stack-based对指令的要求低,对内存的要求高,而register-based对指令的要求高,对内存的要求低。

尽管Dalvik被视为一种Java Virtual Machine,然而其指令字节码是跟JVM不相同的,需要通过一个专用工具,把java的类文件转为.dex(Dalvik Executable)格式。

再过了一下Dex的文件格式,设计得还挺简单,20分钟就可以浏览完了。

面试了一天,头都痛了

星期三, 11月 4th, 2009

其实还是有不少人找工作的,不知道是不是最近的HR放假回来的缘故,收回来的简历比之前新进来的HR要好一点,反正兵来将挡,结果今天叫了四个人过来面试,做题,谈话。

我改了几份卷,面了两个人,头都痛了。

做题速度还是挺重要的,资历和经验浅的人做起题来又慢又弱。

不过早上有个在清华深圳的在职研究生,100分的题目只答了40多,真是……都是些C/C++的题目。改完卷子之后,我就懒得面试,直接让他走人。

不知道清华赚这种钱有什么意思。

在看Masterminds of Programming

星期三, 9月 30th, 2009

下了本Masterminds of Programming在看,其实只想从高一点的角度看这些语言的本质设计思想上的差异。

随便摘录一些,看到哪补充到哪:

How do you recognize a good programmer?

Luiz: You just know it. Nowadays, I tend to recognize bad programmers more easily—not because their programs are bad (although they frequently are a complicated, unstable mess), but because you can sense they are not comfortable at programming, as if their own programs were a burden and a mystery to them.

Luiz是LUA的设计者之一,他是个数学家。

怎样辨别一个好的程序员?

Luiz回答说他觉得要辨别一个差的程序员更容易:不是看他写的程序的好坏来分别,而是看他编程的时候是否自然,假如对待自己的代码犹如重担,那这程序员多数是个差的程序员。