随笔 - 20, 文章 - 0, 评论 - 45, 引用 - 0
数据加载中……
@Nickolas
在家里也不忘了学习,大牛同学。
re: 创建COM组件的全过程分析 Kenny Jiang 2011-04-23 21:32
@fazhang
COM本质论
COM技术内幕
re: 郭靖与黄蓉——真爱无敌 Kenny Jiang 2011-04-23 17:15
@misserwell
小说固然超越生活,但是也是源于生活的。虽然有些不着边际,理想主义,但也是人们的希望。
re: 进程虚拟地址空间 Kenny Jiang 2011-04-23 12:29
@byhh
恩,是的,用才是王道。光看是不好使的。不过看过之后,多方总结,写出来映像会很深刻,多多指点。啊。
@溪流
呵呵,压栈是主调函数做的,但是出栈就不同了。
一点都不给博主点面子,回复很犀利,呵呵。
@陈梓瀚(vczh)
恩,你说的对。
gcc能调用win api是因为win api缺省都是_stdcall,由被调者销毁堆栈。如果是cdecl那么就会出现问题。而C++/c缺省是cdecl,所以在导出函数接口时(如自己写的DLL),需要特别强调是_stdcall才可以被别的语言正常使用。
@溪流
你可以详细看看博客,这个是有区别的。
@Lo
额,我们的程序能够正常运行都是编译器的功劳,每种语言都有自己的编译器,而且不止一种,如c++有gcc,vs等。他们的约定方式不同,所以如果用vs调用gcc编译产生的库,那么vs可能不能正确释放gcc的栈,所以跨平台时,建议是函数本身释放这些空间,而不是调用者,即_stdcall方式。
@溪流
_cdecl是由调用者销毁的。不同的编译器产生栈的方式不尽相同,所以在跨语言时是不适用的。
re: DLL的那些事儿 Kenny Jiang 2011-04-19 13:43
@ToughLife
首先说明一下,对DLL来说,DllMain不是必须的。
Dll可以有单一的入口函数DllMain。系统在不同的时机调用该入口函数。如在执行单个进程或单个线程的初始化和清除操作时。
如果DLL不需要这些通知,那么就不必再DLL的源代码中实现此函数。
re: 进程虚拟地址空间 Kenny Jiang 2011-04-17 13:26
@Cunch
这是我看各种书总结出来的,主要有 windows核心编程 汇编语言 和网上的一些贴子。你可以看看上面所说。