刚学会用vs,一切皆小白,人笨手要勤快,随手作笔记。今天主要是记录怎样用vs2010生成和使用动态库文件.dll,静态库文件.lib和可执行文件.exe。
参考博文:http://www.cnblogs.com/laogao/archive/2012/12/07/2806528.html(这篇写得非常好,思路很清晰)
http://blog.csdn.net/dgly1611/article/details/24844729
1、vs2010生成.dll
我们用一个简单的两整数相加的例子来说明创建dll的方法。本例采用VS2010,使用C++编程语言,具体操作步骤如下。
新建一个项目,选择Win32 控制台应用程序,项目名为add,解决方案名为DLLTEST(注意“为解决方案创建目录”是勾选上的),点击确认,接着点击下一步,到Application Settings,选择应用程序类型为dll,并勾选“导出符号”,点击完成。完成这一步之后,VS界面上左边的解决方案资源管理器中将会看到向导自动生成的文件列表,如下图所示。
add.cpp和add.h中给出了3种类型的example,分别为导出变量nadd、导出函数fnadd以及导出类Cadd。本例只考虑导出函数,所以将导出变量和导出类的样例部分都删掉。即将add.h修改为:
// 下列 ifdef 块是创建使从 DLL 导出更简单的
// 宏的标准方法。此 DLL 中的所有文件都是用命令行上定义的 ADD_EXPORTS
// 符号编译的。在使用此 DLL 的
// 任何其他项目上不应定义此符号。这样,源文件中包含此文件的任何其他项目都会将
// ADD_API 函数视为是从 DLL 导入的,而此 DLL 则将用此宏定义的
// 符号视为是被导出的。
#ifdef ADD_EXPORTS
#define ADD_API __declspec(dllexport)
#else
#define ADD_API __declspec(dllimport)
#endif
extern "C" ADD_API int add(int,int); //注意这里加上extern "C",不然后面调用会出错
//ADD_API int add(int,int);
注意上面代码中的extern "C",虽然在源代码add.cpp中定义的函数名是add,但在dll二进制文件中,经过编译器的“加工”,它实际上变成另外一个名称。这个另外的名称在原有函数名add的基础上加上了一些函数输入输出