摘要: 昨日,编了个DLL和EXE来进行了下测试,exe通过lib静态联编dll,来调用它的导出类,当改变DLL中导出类的结构(eg.成员变量的顺序等),从新发布DLL而不从新联结编译EXE,就会造成错误的执行结果或崩溃!通过观察DLL和EXE生成的汇编代码,才知道生成的机器码中并无类的成员变量,只有类的Size(根据成员变量和有无虚函数)和类函数代码。函数调用是通过名称来调用。(另:内联函数类似于宏,由编译器来处理--把函数体嵌入到调用处)类成员的调用都是通过栈中的指针来调用(如下两种情况)1、分配局部栈变量,根据类Size来调整栈指针ESP,ESP+Size这样来分配空间;2、分配堆指针,把类Si 阅读全文
posted @ 2013-11-09 21:25 归海一刀 阅读(272) 评论(0) 推荐(0) 编辑