一、DLL的创建
创建项目->Win32->Win32项目,名称:MyDLL->选择DLL
1、新建头文件testdll.h创建函数用到的相关定义声明的头文件,其实就是你的所用的函数的头文件复制过来就可以了。
testdll.h代码如下:
#ifndef TestDll_H_
#define TestDll_H_
#ifdef MYLIBDLL
#define MYLIBDLL extern "C" _declspec(dllimport)
#else
#define MYLIBDLL extern "C" _declspec(dllexport)
#endif
MYLIBDLL int Add(int plus1, int plus2);
//You can also write like this:
//extern "C" {
//_declspec(dllexport) int Add(int plus1, int plus2);
//};
#endif
2、新建源文件testdll.cpp
testdll.cpp代码如下: 这部分是你程序里的函数所在
#include "stdafx.h"
#include "testdll.h"
#include <iostream>
using namespace std;
int Add(int plus1, int plus2)
{
}
3、新建模块定义文件mydll.def
mydll.def代码如下:
LIBRARY
EXPORTS
如果有多个函数的话就继续在后在添加
fun2 @2
fun3@ 3
4、vs2008自动创建dllmain.cpp文件,它 定义了DLL 应用程序的入口点。
dllmain.cpp代码如下:
// dllmain.cpp : 定义 DLL 应用程序的入口点。
#include "stdafx.h"
BOOL APIENTRY DllMain( HMODULE hModule,
{
}
最后,编译生成MyDLL.dll文件和MyDLL.lib文件。
二、DLL的使用(静态链接、隐式链接)
创建项目->Win32控制台应用程序,名称:UseDLL。
将MyDLL.lib文件放在与UseDLL.exe文件的目录下。
创建源文件UseDll.cpp
UseDll.cpp代码如下:
// UseDll.cpp : 定义控制台应用程序的入口点。
//
#pragma comment (lib,"MyDLL.lib")
#include "stdafx.h"
#include <iostream>
using namespace std;
extern "C" _declspec(dllimport) int Add(int plus1, int plus2);
int _tmain(int argc, _TCHAR* argv[])
{
}
运行结果如下:
a+b=50
三、DLL的使用(动态调用、显式链接)
创建项目->Win32控制台应用程序,名称:UseDLL。
将MyDLL.dll文件放在与UseDLL.exe文件的目录下。
创建源文件UseDll.cpp
UseDll.cpp代码如下:
// UseDll.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
#include <windows.h>
using namespace std;
typedef int (*AddFunc)(int a,int b);
int _tmain(int argc, _TCHAR* argv[])
{
}