摘要: VC++支持的DLL: DLL的编制与具体的编程语言及编译器无关,动态链接库随处可见,VC++支持三种DLL:非MFC动态库、MFC规则DLL和MFC扩展DLL。DLL导出函数(或变量、类)可供应用程序调用;DLL内部函数只能在DLL程序内使用,应用程序无法调用它们。 导出函数的声明方式: 一种在函 阅读全文
posted @ 2012-07-24 19:22 晨光静默 阅读(14877) 评论(1) 推荐(1) 编辑
摘要: 1.1 创建dll项目1.2 为dll项目编写源文件头文件dllDemo.hextern "C" _declspec(dllexport) int Sum(int a,int b);//加法函数。extern "C" _declspec(dllexport) int Max(int a, int b);//取较大值函数extern "C" _declspec(dllexport) int Min(int a, int b);//取较小值函数源文件dllDemo.cpp大气象#include "dllDemo.h"e 阅读全文
posted @ 2012-07-24 19:02 晨光静默 阅读(1020) 评论(0) 推荐(0) 编辑
摘要: (本文中所有汇编代码均采用Intel语法,即dest在左边)C++中的函数被编译成汇编代码的时候,必须遵循一定的规范,如参数怎么传递,栈指针怎么增减。Visual C++中,一共有5种情况:1.__cdecl2.__stdcall3.__fastcall4.__thiscall默认情况下,是__cdecl。__cdecl 和__stdcall的区别是:__cdecl是调用者清理栈,而__stdcall是被调用者清理栈。所以,理论来说,__cdecl生成的代码体积会更大。但是,对于varargs函数,由于被调用者并不知道参数的具体长度,所以这样的函数只能采用__cdecl。所有这四种方式,生成的 阅读全文
posted @ 2012-07-24 19:01 晨光静默 阅读(2031) 评论(0) 推荐(0) 编辑