1.打开VS(我在这里用的是VS2008,但别的版本基本上也是大同小异),新建一个项目
这个时候我们就可以看到,VS为我们创建了一个项目,并且自动生成了一些文件。
2. 编写源码
在头文件 “NewDLL.h" 中编辑源代码,内容如下:
#ifndef _NewDLL_H_
#define _NewDLL_H_
extern "C" _declspec(dllexport) void Fun();
extern "C" _declspec(dllexport) void Out(int i);
extern "C" _declspec(dllexport) int Add(int a,int b);
#endif
在源文件 “NewDLL.cpp” 中编辑代码,内容如下:
#include "stdafx.h"
#include "NewDLL.h"
#include <stdio.h> //由于用到了"printf"函数,所以要引入头文件stdio.h
void Fun()
{
printf("Hellow World!\n");
}
void Out(int i)
{
printf("num = %d\n",i);
}
int Add(int a,int b)
{
return a+b;
}
3. 生成DLL
在输出框我们可以看到,生成成功了
我们打开项目文件夹(在新建项目时所设置的 ”位置" 文件下,名称为项目名)
我们可以看到有一个名为 “Debug” 的文件夹,打开它。可以看到有一个名为 “NewDLL.dll” 和一个名为 “NewDLL.lib" 的文件,这就是生成的动态链接库。
动态链接的情况下,有两个文件:一个是LIB文件,一个是DLL文件。
LIB包含被DLL导出的函数名称和位置,DLL包含实际的函数和数据,应用程序使用LIB文件链接到DLL文件。
隐式加载时需要使用到LIB文件和DLL文件,但是在显式加载时只需要DLL文件就可以了